元字符
符號 | 意思 | 示范 | 詳例 |
\d | 任意一個數字 | \d{2}-\d{8} | 22-12345678 |
* | *前的符號重復任意次數 次數可以為零 | \d* | 222222222222... 或 2 |
\s | 任意的空白符 全半角空格,tab,換行符 | \bhi\b\s\bLucy\b | hi Lucy |
+ | 和*用法相似 次數>=1 | \d+ | 22 2222 |
\w | 匹配任何單詞字符串 等價于[A-Z a-z 0-9] | \d{2}\w\s\d{6} | 22h 222222 222 222222 22_ 222222 |
^ | 匹配行的開始 | ^\d{2} | 匹配元:wwwwww22wwwwwww 匹配結果:22 |
$ | 匹配行的結束 | [a-z]{2}$ | 匹配元:2222222kfjda999999999 匹配結果:kf |
? | 重復0或1次 | ^2?$ | 匹配元:6dfadfhah22222jdfkajldkf9 匹配結果:22 |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
分枝條件 ?| 符合?
稍微知曉編程的人都懂得,|符號的意思是或。
0\d{2}-\d{8}|0\d{3}-\d{7}這個表達式能匹配兩種以連字號分隔的電話號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。
但是也要注意分支條件的順序
例如:
美國就郵政編碼是5位數字或5位數字-4位數字
因此就可以用\d{5}-\d{4}|\{5}進行匹配
但是如果寫成\d{5}|\d{5}-\d{4}|
那么就只會匹配5位的郵編(以及9位郵編的前5位)
反義
代碼/語法 | 說明 |
---|---|
\W | 匹配任意不是字母,數字,下劃線,漢字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非數字的字符 |
\B | 匹配不是單詞開頭或結束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou這幾個字母以外的任意字符 |
分組
我們可以對某個單詞進行重復匹配,那么對一組字符串又該如何重復匹配呢??我們可以在需要匹配的正則外面加上小括號加以分組。
比如:
(\d{3}.){3}\d{4},這個表達式就能匹配出173.169.111.9999
?