正規表達式pattern的字元與意義對照表
- 詳細內容
- 分類:Javascript
- 發佈:2013-06-02, 週日 23:56
- 點擊數:2874
正規表達式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"。
按個讚!~支持本站!~
你可能會有興趣的文章
- RegExp.test()測試並傳回是否比對成功
- RegExp.exec() 測試並傳回第一個比對成功之字串
- 正規表達式物件 RegExp
- Math.tan()傳回數值的正切
- Math.sqrt()傳回平方根