js中字串正則表示式、正則法則pattern、RegExp、flags、exec
阿新 • • 發佈:2018-12-30
全棧工程師開發手冊 (作者:欒鵬)
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]。