字符 | 含义 | 举例 |
. |
匹配任意一个字符 | 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 个匹配项 |