js 正規表示式精確匹配(01)

2022-03-31 05:41:53 字數 2142 閱讀 3753

string.match()

match() 方法將檢索目標字串,以找到乙個或多個與 正規表示式regexp 匹配的文字。match()有兩種情況:

1、如果 regexp 具有標誌 g,則 match() 方法將執行全域性檢索,找到目標字串中的所有匹配子字串。

匹配情況

返回值沒有找到任何匹配的子串

null

找到了乙個或多個匹配子串

乙個陣列。陣列的內容包含所有的匹配子串

下面是個例項:

var str ='xxtest00test11test22test'

regexp =new regexp(/(test)(.)/g);

while((result = regexp.exec(str)) !=null)

匹配的結果如下:

返回的匹配陣列:

[testaa,testbb,testcc]

並且陣列不包含其他有關匹配的資訊:

0:testaa

1:testbb

2:testcc

2、如果 regexp 沒有標誌 g,那麼 match() 方法就只能目標字串中執行一次匹配。

匹配情況

返回值沒有找到任何匹配的子串

null

找到了乙個或多個匹配子串

乙個陣列。陣列的內容包含與它找到的匹配文字有關的資訊。該陣列的第0 個元素存放的是匹配文字,而其餘的元素存放的是與正規表示式的子表示式匹配的文字。除了這些常規的陣列元素之外,返回的陣列還含有兩個物件屬性。index 屬性宣告的是匹配文字的起始字元在目標字串中的位置,input 屬性宣告的是對目標字串的引用。

我們把上面例子的全域性標誌g拿掉,regexp = new regexp(/(test)(.)/);再次得到的匹配結果如下:

返回的匹配陣列:

[test0,test,0]

並且陣列包含index和input資訊:

0:test0

1:test

2:0index:2

input:xxtest0test1test2test

不過有一點需要說明的是,在ie6,7,8下,返回的陣列同時包含lastindex資訊,用來表示表示匹配子串的下乙個位置。話說這個屬性應該是在regexp上面的,所以在ie9裡面去掉了。

string.exec()方法:

1、如果 regexp 不具有標誌 g。

匹配情況

返回值沒有找到任何匹配的子串

null

找到了乙個或多個匹配子串

乙個陣列。陣列的內容與呼叫match() 返回的陣列是相同的。

沿用上面的例子:

result = regexp.exec(str);

返回的匹配陣列:

[test0,test,0]

並且陣列包含index和input資訊:

0:test0

1:test

2:0index:2

input:xxtest0test1test2test

同樣,在ie6,7,8下,返回的陣列同時包含lastindex資訊。

2、如果 regexp 具有標誌 g。

它會在 regexp的 lastindex 屬性指定的字元處開始檢索。當 exec() 找到了與表示式相匹配的文字時,在匹配後,它將把regexp的 lastindex 屬性設定為匹配文字的最後乙個字元的下乙個位置。這就是說,可以通過反覆呼叫 exec() 方法來遍歷字串中的所有匹配文字。當 exec() 再也找不到匹配的文字時,它將返回 null,並把 lastindex 屬性重置為 0。

注:無論 regexpobject 是否是全域性模式,exec() 都會把完整的細節新增到它返回的陣列中。這就是 exec() 與 match() 的不同之處,後者在全域性模式下返回的資訊要少得多。如果要獲得所有的匹配細節,就可以在全域性模式下迴圈呼叫exec()方法。

類似:

var str ='xxtest00test11test22test'

regexp =new regexp(/(test)(.)/g);

while((result = regexp.exec(str)) !=null)

js 正規表示式匹配中文

簡單匹配中文方法 u0000 u00ff 匹配非單位元組字元 另錯誤方法 u00 uff 匹配 非單位元組字元 還包括一些全半形符號如,等 還有vwxyz字元 說明 u0000 u00ff.包含unicode單位元組編碼 0 255編碼 包含基本控制字元和拉丁文本母。採用該否定表示式,粗略判斷是否含...

JS 正規表示式匹配獲取

表示轉義字元 表示乙個任意字元 表示字元個數 表示字元個數 表示開始與結束 表示非 d表示 1個數字 w 表示乙個字元 不包含中文 s 表示乙個空白字元 表示優先順序,提取組 表示或 方式一 var regobj new regexp d 方式二 var regobj d 推薦使用第二種方式,這種方...

JS正規表示式詳解01

查詢符合條件的乙個字串的位置,找不到返回 1 abc search b return 1 abc search d return 1 abcabc search b g return 1 查詢符合條件的字串,並進行替換,找不到不進行替換 abcabc replace b 2 return a2cab...