符號說明
不方便書寫的符號使用轉義符 "\" 來取消特殊語義例如^表示字符串的開始\^則表示匹配^這個符號。
通常大寫表示反義詞例如\d表示匹配數字,\D表示匹配非數字
常用匹配字符
| 符號 | 說明 |
| . | 匹配除換行外的所有字符 |
| \w | 匹配所有字母數字,等同於 [a-zA-Z0-9_] |
| \d | 匹配數字: [0-9] |
| \s | 匹配所有空格字符,等同於: [\t\n\f\r\p{Z}] |
| \f | 匹配一個換頁符 |
| \n | 匹配一個換行符 |
| \r | 匹配一個回車符 |
| \t | 匹配一個製表符 |
| \v | 匹配一個垂直製表符 |
| \p | 匹配 CR/LF(等同於 \r\n),用來匹配 DOS 行終止符 |
字符,數字,空格字符有反義匹配即\W,\D,\S
限定符,量詞
| 符號 | 說明 |
| * | 出現0次或多次 |
| + | 出現1次或多次 |
| ? | 出現0次或1次 |
| {n} | 出現n次 |
| {n,m} | 出現n次至m次,可不寫n或m表示至少n次或至多m次 |
貪婪匹配
默認為貪戀匹配,即默認儘可能多的匹配
"/(.*at)/" => The fat cat sat on the mat.
惰性匹配
在量詞後加上?可將匹配模式修改為惰性匹配,儘可能少的匹配
"/(.*?at)/" => The fat cat sat on the mat.
定位符
定位符僅匹配位置並不匹配指定字符
| 符號 | 說明 |
| ^ | 開始位置 |
| $ | 結束位置 |
| \b | 匹配單詞的開始或結束 |
| \B | 匹配非單詞的開始或結束 |
範圍
| 符號 | 說明 |
| | | 匹配左側或者右側, x|y 表示匹配x或者y,左右可以是分組 |
| [] | 括號內為匹配範圍,[avd],表示avd三個字母都可匹配 |
| [a-z] | 表示匹配連續的範圍a到z |
| [^a-z] | 表示匹配a到z之外的任意字符 |
分組
| 符號 | 說明 |
| () | 括號內為子表達式,子表達式可被引用 |
| \n | n為1-9之間的數字,在正則表達式中來引用表達式中的分組,例如(a)\1,等價於aa |
分組之後的表達式可在文本編輯器中使用$n來引用
其他
正則表達式修飾符
不同語言對正則表達式有不同的修飾符例如忽略大小寫,多行匹配等,js是在/表達式/修飾符 中配置。具體需要看使用語言中的實現。 js中正則表達式的標記,可組合使用,在正則表達式最後加上符號
| 符號 | 說明 |
| g | 全局匹配 |
| i | 不區分大小寫 |
| m | 多行搜索 |
| s | 允許.匹配換行符 |
- 默認正則會返回第一個匹配的結果,加上全局匹配後會返回所有匹配的結果
"/.(at)/" => The fat cat sat on the mat.
"/.(at)/g" => The fat cat sat on the mat.
特殊字符匹配
| 符號 | 說明 |
| \xXX | 編號在 0 ~ 255 範圍的字符,比如:點擊測試 空格可以使用 "\x20" 表示 |
| \uXXXX | 任何字符可以使用 "\u" 再加上其編號的4位十六進制數表示,比如:點擊測試 "\u4E2D" |
匹配規則,環視
| 符號 | 說明 |
| (?:pattern) | 捕獲但不單獨獲取結果 |
| (?=pattern) | 肯定查詢,僅當匹配字符串符合後綴匹配內容才判定為匹配,例如Windows(?=95|98|NT|2000) |
| (?<=pattern) | 效果同上但放在字符串前,匹配前綴,例如 (?<=95|98|NT|2000)Windows |
| (?!pattern) | 否定查詢,僅當匹配字符串不符合匹配後綴才判定為匹配 |
| (?<!pattern) | 效果同上但放在字符串之前,匹配前綴,例如 (?<!95|98|NT|2000)Windows |
資料
- 將正則表達式圖形化,方便理解
2.在線測試正則
https://regex101.com/r/AyAdgJ/1
- 參考資料
https://blog.csdn.net/hello_word2/article/details/84890548
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
https://www.runoob.com/regexp/regexp-tutorial.html
http://www.regexlab.com/zh/regref.htm
https://xie.infoq.cn/article/dcc7103126233028945c67c43
https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md