
正規表達式是什麼#
正規表達式就是記錄文本規則的程式碼。
測試正規表達式#
線上測試工具: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 開頭的字串 |