正規表達式pattern的字元與意義對照表

正規表達式pattern的字元:

正規表達式功能十分強大,不過十分複雜,我把正規表達式樣本使用的字元跟說明對照表弄了出來。

還附上了例子的圖形,能比較好理解。

這表格從維基百科修改的,我用我的理解重新寫了出來,並附上例子與圖形。

正規表達式pattern的字元與意義對照表:

字元 說明
\ 跳脫字元,代表後面接的字元跳脫出原來的意義。例: "n" 代表字元"n"。"\n"代表換行符號。"\\"代表"\"(第一個"\"把第二的"\"的功能跳脫掉,變成單純的字元)。
^

比對字串的啟始位置。例:^xyz,比對成功:xyz456,xyz。

 ==> 字串以x開頭,後面緊接接yx。

$

比對字串的結束位置。例:xyz$,比對成功:xyz,ccxyz。

==>以xyz結尾,之前誤會了Debuggex。測試ccxyz時,他一直跟我說Does not match,可是有將字串變色,我真搞不懂他,不過像ccxyz這樣的字串,javascript是會傳回匹配字串xzy的。

*

比對前面的字元(或是子pattern)0次或多次。此字符與 {0,} 意義相同。 例:xzy*,比對成功:xzy, xz, xzt,。

=>xz後面接y,y可以多次 也可以繞過去(很明顯我打錯了xyz變成xzy,好吧截圖不易,將就用)。

+

比對前面的字元(或是子pattern)至少一次或多次。此字符與 {1,}意義相同。例xyz+,比對成功:xyz,xyzzz。

==>xy後面接z,z至少要出現一次。/xyz+/g.exec("xyzzz") ==>傳回xyzzz。

?

比對前面的字元(或是子pattern)0次或1次。此字符與 {0,1}意義相同。例:xyz?,比對成功:xyz,xyzzz。

==>z可以1次 也可以繞過去。xyzzz=>比對完第一個z就算成功,後面就再說。/xyz?/g.exec("xyzzz")==>傳回xyz。

{n}

比對前面的字元(或是子pattern) n 次,例:xyz{5},比對成功:xyzzzzz。

=z重複5次。/xyz{5}/g.exec("xyzzzzzzz")==>傳回xyzzzzz。

{n,}

比對前面的字元(或是子pattern) 至少n 次,例:xyz{5,},比對成功:xyzzzzz。

==>z至少重複5次。/xyz{5,}/g.exec("xyzzzzzzz")==>傳回xyzzzzzzz。

{n,m}

比對前面的字元(或是子pattern) 至少n次,最多m次,n<=m。例:xyz{5,8}t,比對成功:xyz{5,8}t。

==>z至少5次,至多8次。

?

此字元跟在其他限制符(*,+,?,{n},{n,},{n,m}後面時,比對方法是非貪婪的。非貪婪模式以最少的字元比對,貪婪模式(預設)以最多字元比對。例如,對於字串「xyzzzz」,「xyz+?」將匹配「xyz」,而「xyz+」將匹配「xyzzzz」。這會影響匹配成功後傳回的字串。

==>xyz+?與xyz+都可匹配成功,不過結果字串不一樣。

.

此字元可以匹配任何字元,除了換行字符(\n)外,要連換行字源一起匹配的話可以寫成 ==> .|\n ==> | 代表或許,所以這行的意思是所有字元或換行字元(\n)都可以匹配。  例:. 比對成功:x, y,c

==>匹配任何字元1次。

(pattern)

pattern代表記憶樣本,譬如使用Javascript中的exec()方法時,會得到匹配成功的字串,以及記憶樣本的字串(與括號內樣本匹配的字串)。譬如說  /x(y+)z/g.exec("xxxyyyyzze") 會得到 xyyyyz,yyyy,前面是匹配成功的字串,後面是記憶樣本的字串。由此例可知 左括號與右括號都是特殊字元,若是要比對字串中的左括號與又括號要加上跳脫字元:\( 或是\)。

 

(?:pattern)

匹配 但不記憶該樣本。例:.x(?:y+)z 匹配成功:xyz , xyyz

x(?=y)

當x後面接著y時進行x的比對。但是y並不算在匹配成功的字串內。譬如說 /x(?=y)/g.exec("xxxyyyyzze") 會只會傳回 x。例:x(?=y|z)

=>x後面接y或是z時才進行x的匹配。

x(?!y)

當x後面不接著y時進行x的比對。例:x(?!y|z)。

=>x後面不是接y或不是接z時才進行x的匹配。

(?<=pattern) 跑不出來 @@?,MOZILLA的MDN中也沒提到這個。先跳過。
(?<!pattern) 跑不出來 @@?,MOZILLA的MDN中也沒提到這個。先跳過。
x|y

 x 或是y 例:X|Y|Z , 匹配成功:x,y,z。

[xyz]

匹配中括號內的任何字元。

[^xyz]

中括號內的字元都不匹配。

[a-z]

匹配所有小寫字母。

[^a-z]

不匹配所有小寫字母。

\b

單詞邊界,代表單詞和空格間的位置。例如,「er\b」可以匹配「never」中的「er」,但不能匹配「verb」中的「er」。

\B

非單詞邊界。例如,「er\B」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。

\cx

Ctrl-x,例如,\cM匹配一個Control-M或Enter符

\d

代表數字字元,跟[0-9]意思一樣。

\D

代表非數字字元,跟[^0-9]意思一樣。

\f

換頁符。相同於\x0c和\cL。

\n

換行符。相同於\x0a和\cJ。

\r

Enter符。相同於\x0d和\cM。

\s

空白字元,包含空格、製表符、換頁符等等。相同於[ \f\n\r\t\v]。

\S

匹配任何非空白字元。相同於[^ \f\n\r\t\v]。

\t

製表符。相同於\x09和\cI。

\v

垂直製表符。相同於\x0b和\cK。

\w

包括底線的任何單詞字元。相同於 [A-Za-z0-9]。

\W

任何非單詞字元與底線。相同於 [^A-Za-z0-9_]。

\xhh

hh代表16進位的ASCII碼。例如,「\x41」代表 A。例:\x64。

\num

背後參考,將此字元前最後一個子樣式重複n次。例:xy\5z。

\0

null 字元,請勿把該字元接在數字後方。

\uhhhh

hhhh代表十六進制數位表示的Unicode字元。例如,\u00A9匹配版權符號(©)

關於正規表達式物件請參考:正規表達式物件 RegExp

我把文章分類弄錯 ==",改回來我的讚都不見了>"<(網址變了咩..),請大家努力按XD"。

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章