JS的正規表示式 四

2021-08-30 12:10:38 字數 1691 閱讀 5509

前面我們曾經討論過一次括號的問題,見下面這個例子:

這個正則是為了實現只匹配以b或者c開頭的字串,一直匹配到換行字元,但是。上面我們已經看到了,可以使用「\1」來反向引用這個括號裡的子正規表示式所匹配的內容。而且exec方法也會將這個字正規表示式的匹配結果儲存到返回的結果中。

返回結果:crazy.grass.com,c

使用形如(?:pattern)的正則就可以避免儲存括號內的匹配結果。例如:

可以看到返回的結果不再包括那個括號內的字正規表示式多匹配的內容

同理,反向引用也不好使了:

返回cc,c。cc是整個正規表示式匹配的內容,而b是第乙個子正規表示式匹配的內容。

返回null。由於根本就沒有記錄括號內匹配的內容,自然沒有辦法反向引用了。

形式:(?=pattern)

所謂正向預查,意思就是:要匹配的字串,後面必須緊跟著pattern!

我們知道正規表示式/crazy/會匹配crazy。同樣,也會匹配crazy9中的crazy。但是我們可能希望,crazy只能匹配crazy8中的crazy。這時候就可以像下面這樣寫:/crazy(?=8)/,看兩個例項:

返回null。

匹配crazy。

需要注意的是,括號裡的內容並不參與真正的匹配,只是檢查一下後面的字元是否符合要求而已,例如上面的正則,返回的是crazy,而不是crazy8。

返回是crazy。

返回是null,因為crazy後面不是grass

形式(?!pattern)和?=恰好相反,要求字串的後面不能緊跟著某個pattern,還拿上面的例子:

返回crazy

返回null

首先要搞清楚什麼是元字元呢?我們之前用過*,+,?之類的符號,它們在正規表示式中都有一定的特殊含義,類似這些有特殊功能的字元都叫做元字元。例如

reg = /c*/;
表示有任意個c,但是如果我們真的想匹配』c*』這個字串的時候怎麼辦呢?只要將*轉義了就可以了,如下:

返回匹配的字串:c*。

同理,要匹配其他元字元,只要在前面加上乙個「\」就可以了。

形式:/pattern/g

例子:reg = /b/g;

後面再說這個g的作用。先看後面的兩個修飾符。

返回null,因為大小寫不符合。

匹配到b,這個就是i修飾符的作用了。

形式:/pattern/m

m修飾符的作用是修改^和$在正規表示式中的作用,讓它們分別表示行首和行尾。例如:

匹配失敗,因為字串的開頭沒有b字元。但是加上m修飾符之後:

匹配到b,因為加了m修飾符之後,^已經表示行首,由於bbs在字串第二行的行首,所以可以成功地匹配。

js數字正規表示式,js小數正規表示式

js數字正規表示式,js小數正規表示式 是否為數字 僅正數 包括正整數 正小數 0 param value returns function isnumber value 是否為所有數字 正數 負數 包括整數 小數 0 param value returns function isnumberall...

JS 正規表示式

驗證數字的正規表示式集 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 9 0 9 驗證非零的正整數 1 9 0 9 驗證非零的負整數 1 9 0 ...

js正規表示式

用正規表示式模式在字串中執行查詢,並返回包含該查詢結果的乙個陣列。rgexp.exec str 引數rgexp 必選項。包含正規表示式模式和可用標誌的正規表示式物件。str 必選項。要在其中執行查詢的string物件或字串文字。說明如果exec方法沒有找到匹配,則它返回null。如果它找到匹配,則e...