符號說明
不方便書寫的符號使用轉義符 "\" 來取消特殊語義例如^表示字符串的開始\^則表示匹配^這個符號。
通常大寫表示反義詞例如\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