❶ js 如何正則匹配多個,像php 的preg_match()
javaScript中的 match() 方法可以實現
match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。
stringObject.match(searchvalue)
stringObject.match(regexp)
參數說明
searchvalue 必需。規定要檢索的字元串值。
regexp 必需。規定要匹配的模式的 RegExp 對象。如果該參數不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構造函數,將其轉換為 RegExp 對象。
返回值
存放匹配結果的數組。該數組的內容依賴於 regexp 是否具有全局標志 g。
其他說明
match() 方法將檢索字元串 stringObject,以找到一個或多個與 regexp 匹配的文本。這個方法的行為在很大程度上有賴於 regexp 是否具有標志 g。
如果 regexp 沒有標志 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的信息。該數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與正則表達式的子表達式匹配的文本。除了這些常規的數組元素之外,返回的數組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字元在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。
如果 regexp 具有標志 g,則 match() 方法將執行全局檢索,找到 stringObject 中的所有匹配子字元串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數組。不過全局匹配返回的數組的內容與前者大不相同,它的數組元素中存放的是 stringObject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。
注意:在全局檢索模式下,match() 即不提供與子表達式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()。
例如:
我們將使用全局匹配的正則表達式來檢索字元串中的所有數字:
<script type="text/javascript">
var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))
</script>
輸出:
1,2,3
❷ js 怎麼獲得 與正則表達式 匹配的 字元串
實現的效果:在字元串中abcdefgname='test'sddfhskshjsfsjdfps中獲取name的值test 實現的機制:通過replace的回調函數獲取。
可以通過下面的代碼獲取匹配部分
var str = "abcdefgname='test'sddfhskshjsfsjdfps";
var reg = /name='((\w|-|\s)+)/ig;
str.replace(reg, function() { console.log(arguments.length); //5 console.log(arguments[1]);//test });
字元串 stringObject 的 replace() 方法執行的是查找並替換的操作。它將在 stringObject 中查找與 regexp 相匹配的子字元串,然後用 replacement 來替換這些子串。如果 regexp 具有全局標志 g,那麼 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。
❸ js 正則表達式,字元串中如何匹配id的內容
constregex=/(.*)(id)(:|=)(s*S+)(.*)/gm;
conststr=`formatMessage({id:'app.settings.menu.focus'}),
<FormattedMessageid="app.settings.perferences.save"></FormattedMessage>`;
console.log(str.replace(regex,'$4'))
替換即可
❹ js 正則 匹配 數字和字母或下劃線
var reg = /^((\w*\d\w*[a-z]\w*)|(\w*[a-z]\w*\d\w*))$/i;
var str = "111aaa";
reg.test(str);
str = "aa1111";
reg.test(str);
str = "aa_11";
reg.test(str);
str = "11_aaaa____11";
reg.test(str);
❺ JS中正則表達式只有3種匹配模式(沒有單行模式)詳解
JS正則表達式對象模式僅有如下三種:
g
(全文查找出現的所有
pattern)
i
(忽略大小寫)
m
(多行查找)
即沒有單行匹配模式,Singleline(單行模式):更改.的含義,使它與每一個字元匹配(包括換行符\n)。
如java中
String
regex
=
"(?s)(?<=interface).{0,500}(shutdown)";---------"."表示在一行。
但可以採用[\d\D]或[\w\W]或[\s\S]或(.|\s)*?來解決不能換行問題
以上這篇JS中正則表達式只有3種匹配模式(沒有單行模式)詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
❻ js正則匹配數字或者"."
你好,
首先呢,正則是非常靈活的,所以校驗也要分等級。
從嚴格角度來看,可以這么分析,從版本格式來考慮,其實不推薦限制長度,如下格式:
a.b(eg: 1.0, 1.100, 甚至 1.1000)
a.b.c (eg: 1.1.1, 1.12.1, 甚至 1.121.1)
如果再允許整數版本,還可以增加一個
a(其實也是可能>5位的嘛)
根據以上分析,可以使用「或」連接三種規則,合並生成一個正則表達式:
//不限長度版本
varrVersion=/^d+$|^d+.d+$|^d+(.d+){1,2}$/;
//限制長度(每一位版本號應該是一位數)
//varrVersion=/^d$|^d.d$|^d(.d){1,2}$/;
現在來驗證下:
varcaseOne='1';
varcaseTwo='1.1';
varcaseThree='1.2.1';
varerrorCase='1..2';
console.log(rVersion.test(caseOne));//true
console.log(rVersion.test(caseTwo));//true
console.log(rVersion.test(caseThree));//true
console.log(rVersion.test(errorCase));//false
//增加一個多位校驗
console.log(rVersion.test('1.12.1'));//true
//但是這種就不行了
console.log(rVersion.test('1.1.2.1'));//false
//如果rVersion=/^d$|^d.d$|^d(.d){1,2}$/;
//那麼'1.12.1'這個也通不過
console.log(/^d$|^d.d$|^d(.d){1,2}$/.test('1.12.1'));//false
好了,大概就這么多,根據你的情況取捨吧。
希望能解決你的問題,望採納。如有疑問可追問~~
❼ js中正則表達式如何匹配如下條件的字元串
按照你的要求編寫的正則表達式見圖