正規表達式是什麼#
正規表達式就是記錄文本規則的程式碼。
測試正規表達式#
線上測試工具:wegester
元字符#
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數字或底線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數字 |
\b | 匹配單詞的開始或結束 |
^ | 匹配字串的開始 |
$ | 匹配字串的結束 |
例:
查找目標 | 正規表達式 |
---|---|
hi 後面不遠處跟著一個 Lucy | \bhi\b.*\bLucy\b |
以 0 開頭,然後是兩個數字,然後是一個連字號 “-”,最後是 8 個數字 | 0\d\d-\d\d\d\d\d\d\d\d 或 0\d {2}-\d {8} |
匹配以字母 a 開頭的單詞 | \ba\w*\b |
1 個或更多連續的數字 | \d+ |
剛好 6 個字符的單詞 | \b\w{6}\b |
整個字串是 5 到 12 位數字 | ^\d{5,12}$ |
字符轉義#
例:
查找目標 | 正規表達式 |
---|---|
deerchao.cn | deerchao\.cn |
C:\Windows | C:\\Windows |
重複#
代碼 / 語法 | 說明 |
---|---|
* | 重複零次或更多次 |
+ | 重複一次或更多次 |
? | 重複零次或一次 |
{n} | 重複 n 次 |
{n,} | 重複 n 次或更多次 |
{n,m} | 重複 n 到 m 次 |
例:
正規表達式 | 查找目標 |
---|---|
Windows\d+ | Windows 後面跟 1 個或更多數字 |
^\w+ | 一行的第一個單詞 |
字符類#
例:
正規表達式 | 查找目標 |
---|---|
[aeiou] | 任何一個英文元音字母 |
[0-9] | 一位數字 |
(?0\d{2}[) -]?\d{8} | 幾種格式的電話號碼 |
分枝條件#
匹配分枝條件時,將會從左到右地測試每個條件,如果滿足了某個分枝的話,就不會去再管其它的條件了。
例:
正規表達式 | 查找目標 |
---|---|
0\d{2}-\d{8}|0\d{3}-\d{7} | 三位區號,8 位本地號 或 4 位區號,7 位本地號 |
\d{5}-\d{4}|\d{5} | 美國郵編的規則是 5 位數字,或者用連字號間隔的 9 位數字 |
分組#
可以用小括號來指定子表達式(也叫做分組)
例:
正規表達式 | 查找目標 |
---|---|
(\d{1,3}.){3}\d{1,3} | 簡單的 IP 地址匹配 |
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) | 正確的 IP 地址 |
反義#
代碼 | 說明 |
---|---|
\W | 匹配任意不是字母,數字,底線,漢字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非數字的字符 |
\B | 匹配不是單詞開頭或結束的位置 |
[^x] | 匹配除了 x 以外的任意字符 |
[^aeiou] | 匹配除了 aeiou 這幾個字母以外的任意字符 |
例:
正規表達式 | 查找目標 |
---|---|
\S+ | 不包含空白符的字串 |
<a[^>]+> | 用尖括號括起來的以 a 開頭的字串 |