| 字符 | 含义 | 举例 |
. |
匹配任意一个字符 | abc. -> abcd或abc6… |
| [] | 匹配[]中的任意一个字符 | [abc]d -> ad、bc、cd |
| - | 在[]内表示字符范围 | [0-9a-fA-F]-> 一位16进制数 |
| ^ | 位于[]内的开头,匹配除括号以外的任意一个字符 | [^xy]->匹配除x y外的任意一个字符 |
\w匹配任何字母``数字``下划线字符\d匹配任何十进制数字\s匹配任意空格字符
| 符号 | 替换正则 | 匹配 |
| \d | [0-9] | 数字字符 |
| \D | [^0-9] | 非数字组合 |
| \w | [a-zA-Z0-9_] | 数字字母下划线 |
| \W | [^\w] | 非数字字母下划线 |
| \s | [\r\t\n\f] | 表格,换行等空白区域 |
| \S | [^\s] | 非空白区域 |
特殊符号
| 字符 | 含义 | 举例 |
| \ | 转义字符,普通字符转义为特殊字符,特殊字转义为普通字符 | 普通字符<写成<表示开头位置 |
| () | 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符 | ([0-9]{1,3}.){3}[0-9]{1,3} -> 匹配正则表达式 |
| ` | ` | 连接两个子表达式,表达或的关系 |
| | | 从多个模式中选择其一,类似于逻辑或 | cpp|java|python |
数量限定符
*将匹配其左边的正则表达式出现零次或多次的情况。+将匹配其左边的正则表达式出现一次或多次的情况。?将匹配其左边的正则表达式出现零次或一次的情况。{M}将匹配其左边的正则表达式出现M次的情况。{M,N}将匹配其左边的正则表达式出现M到N次的情况。{M,}将匹配其左边的正则表达式出现M次或更多次的情况。
位置限定符
| 字符 | 含义 | 举例 |
| ^ | 匹配行首的位置 | ^Content -> 匹配位于一行开头的Content |
| $ | 匹配行末的位置 | ;$ -> 匹配位于一行结束的; ^$ -> 匹配空行 |
| < | 匹配单词开头的位置 | <th -> 匹配 th… |
| > | 匹配单词结尾的位置 | p> -> 匹配 …p |
| \b | 匹配单词开头或结尾的位置 | \bat -> 匹配at…或…at |
| \B | 匹配非单词开头或结尾的位置 | \Bat -> 匹配…at… |
- ^或\A接字符串,表示以该字符串开始(区别:^匹配一行的开始,\A匹配输入的开始)
- $或\Z接字符串,表示以该字符串结尾(同上)
- \b接字符串,表示以该字符串开始(区别于^和\A:匹配一个单词起始部分,不管该单词前面是否有任何字符。通俗来说:
^匹配字符串的开始,\b匹配单词的开始) - \B接字符串,表示以该字符串为子串但不是边界
贪婪模式与非贪婪模式
- 贪婪模式:正则表达式匹配时,会尽量多的匹配符合条件的内容
- 非贪婪模式:正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)
常用:
| 符号 | 描述 | 表达式例子 | 校验内容 | 例子结果 |
| . | 匹配一个字符且仅限一个字符 | a.c | abc | 共 1 个匹配项 |
| \d | 匹配任意个数字 | \d | 123464 | 共 6 个匹配项 |
| \w | 匹配一个字母、数字或下划线,w的意思是word(不能匹配#、空格等字符) | \w | gddgfdh | 共 7 个匹配项 |
| \s | 可以匹配一个空格字符,空格字符不但包括空格,还包括tab字符 | a\sc | a c | 共 1 个匹配项 |
| \D | 匹配一个非数字 | 00\D | 007 | 没有匹配结果 |
| \W | 匹配\w不能匹配的字符 | |||
| \S | 匹配\s不能匹配的字符 | |||
| * | 匹配任意个字符,包括0个字符 | A\d* | A380 | 共 1 个匹配项 |
| + | 匹配至少一个字符 | A\d+ | A380 | 共 1 个匹配项 |
| ? | 匹配0个或一个字符 | A\d? | A | 共 1 个匹配项 |
| {n} | 精确匹配n个字符 | A\d{3} | A380 | |
| {n,m} | 精确匹配n~m个字符 | A\d{3,5} | A38000 | 共 1 个匹配项 |
| ^ | 表示开头 | ^A\d{3} | A3800000000 | 共 1 个匹配项 |
| $ | 表示结尾 | ^A\d{3}$ | A3800000000 | 没有匹配结果 |
| […] | 匹配指定的范围 1-9:[1-9] a-f:[a-f] A-F:[A-F] 排除法:即不包含指定范围的字符用^表示 [^1-9]{3} | [123456789]\d{6,7} | 1234567 | 共 1 个匹配项 |
| 丨 | 或规则匹配 可以提取公共部分后采用括号包裹的方式匹配 | (java | php | go) | java、learn php | AB丨CD |
| (…) | 分组匹配 例:区号-电话号匹配规则^(+\d{2})-(\d{11})$,括号分组 | ^(+\d{2})-(\d{11})$ | +86-18000000000 | 共 1 个匹配项 |