1. 程式人生 > >js中字串正則表示式、正則法則pattern、RegExp、flags、exec

js中字串正則表示式、正則法則pattern、RegExp、flags、exec

全棧工程師開發手冊 (作者:欒鵬)

js中字串正則表示式

正則法則的應用

正則表示式 = /pattern/flags 其中flags中g表示匹配全部,i表示不區分大小寫,m表示匹配多行。
pattern包含 ([{\^$|)?*+.]}元字元,若匹配的字串中包含元字元,使用\轉義。
程式碼如下:

var patter1 = /(.)u/gi;                 //正則表示式,標誌沒有,可為空,也可以使用var patter1 = new RegExp("pattern","flags"),使用new是建立物件
if(patter1.test(name)){                 //test查詢符合要求的子串是否存在,返回true
RegExp.input; //原始字串 RegExp.leftContext; //捕捉到的位置的左邊字串 RegExp.rightContext; //捕捉到的位置的右邊字串 RegExp.lastMatch; //返回最近一次與整個正則表示式匹配的字串 mu RegExp.lastParen; //返回最近一次捕捉的字元 patter1.global; //返回正則是否包含全域性標誌g } var matches = patter1.exec(name); //查詢符合要求的子串。matches.index表示查詢到的起始下標,matches.input表示輸入字串。patter1.lastIndex表示查詢到的結束下標,matches[0]表示查詢到的第一個匹配項,若匹配項為全域性模式,則每次呼叫返回下一個匹配項。

正則表示式字元含義

\ 做為轉義,即通常在"\"後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜杆後/\b/,轉意為匹配一個單詞的邊界。 
-或- 
對正則表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"\"後,/a\*/將只匹配"a*"。 

^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa 
+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa 
? 匹配前面元字元0次或1次,/ba*/將匹配b,ba 
(x) 匹配x儲存x在名為$1...$
9的變數中 x|y 匹配x或y {n} 精確匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配這個集合中的任一一個字元(或元字元) [^xyz] 不匹配這個集合中的任何一個字元 [\b] 匹配一個退格符 \b 匹配一個單詞的邊界 \B 匹配一個單詞的非邊界 \cX 這兒,X是一個控制符,/\cM/匹配Ctrl-M \d 匹配一個字數字符,/\d/ = /[0-9]/ \D 匹配一個非字數字符,/\D/ = /[^0-9]/ \n 匹配一個換行符 \r 匹配一個回車符 \s 匹配一個空白字元,包括\n,\r,\f,\t,\v\S 匹配一個非空白字元,等於/[^\n\f\r\t\v]/ \t 匹配一個製表符 \v 匹配一個重直製表符 \w 匹配一個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9] \W 匹配一個不可以組成單詞的字元,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]