標籤:
NOTE: 在Regex中,許多標點符號具有特殊的含義。它們是:
^ $ . * + ? = ! : | \ / ( ) [ ] { }
Regex的直接量字元
| 字元 |
匹配 |
| 字母數字字元 |
自身 |
| \0 |
NUL字元(\u0000) |
| \t |
定位字元(\u0009) |
| \n |
分行符號(\u000A) |
| \v |
垂直定位字元(\u000B) |
| \f |
換頁符(\u000C) |
| \r |
斷行符號(\u000D) |
| \xnn |
由十六進位數nn指定的拉丁字元,例如,\x0A等價於\n |
| \uxxxx |
由十六進位xxxx指定的Unicode字元,例如,\u0009等價於\t |
| \cX |
控制字元^X。例如,\cJ等價於分行符號\n |
Regex的字元類
| 字元 |
匹配 |
| [...] |
位於括弧之內的任一字元 |
| [^...] |
不在括弧之中的任一字元 |
| . |
除分行符號和其他Unicode行終止符之外的任一字元 |
| \w |
任意ASCII單字字元,等價於[a-zA-Z0-9_] |
| \W |
任意非ASCII單字字元,等價於[^a-zA-Z0-9_] |
| \s |
任何Unicode空白符 空格 定位字元 換頁符 |
| \S |
任何非Unicode空白符的字元,注意\w和\S不同 |
| \d |
任意ASCII數字,等價於[0-9_] |
| \D |
除了ASCII數字之外的任何字元,等價於[^0-9_] |
| [\b] |
退格直接量(特例) |
Regex的重複字元
| 字元 |
含義 |
| {n,m} |
匹配前一項至少n次,但是不能超過m次 |
| {n,} |
匹配前一項n次,或更多次 |
| {n} |
匹配前一項恰好n次 |
| ? |
匹配前一項0次或1次,也就是說前一項是可選。等價於{0,1} |
| + |
匹配前一項1次或多次,等價於{1,} |
| * |
匹配前一項0次或多次,等價於{0,} |
Regex的選擇、分組和引用字元
| 字元 |
含義 |
| | |
選擇。匹配的是該符號左邊的子運算式或右邊的子運算式 |
| (...) |
組合。將幾個公事包為一個單元,這個單元可由*、+、?和|等符號使用,而且還可以記住和這個組合匹配的字元以供此後的引用使用 |
| (?:...) |
只組合。把公事包到一個單元,但是不記憶與該組匹配的字元 |
| \n |
和第n個分組第一次匹配的字元相匹配。組是括弧中的子運算式(可能是嵌套的)。組號是從左至右計數的左括弧數,以(?:形式分組的組不編碼 |
Regex的錨字元
| 字元 |
含義 |
| ^ |
匹配字串的開頭,在多行檢索中,匹配一行的開頭 |
| $ |
匹配字串的結尾,在多行檢索中,匹配一行的結尾 |
| \b |
匹配一個詞語的邊界。簡而言之,就是位於字元\w和\W之間的位置,或位於字元\w和字串的開頭或結尾之間的位置(但注意,[\b]匹配的是退格符) |
| \B |
匹配非詞語邊界的位置 |
| (?=p) |
正前向聲明,要求接下來的字元都與模式p匹配,但是不包括匹配中的那些字元 |
| (?!=p) |
反前向聲明,要求接下來的字元不與模式p匹配 |
Regex的標誌
| 字元 |
含義 |
| i |
執行不區分大小寫匹配 |
| g |
執行一個全域匹配。簡而言之,即找到所有匹配,而不是在找到第一個之後就停止 |
| m |
多行模式,^匹配一行的開頭或字串的開頭,$匹配一行的結尾或字串的結尾 |
JavaScriptRegex