正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则表达式能便捷处理文本数据,降低字符类型原生api的繁琐调用,起初对于电话号码乃至文本替换总是会想到采用“成熟”的方案“借鉴”过来解决,编程其根本还是需要了解其底层核心逻辑,这里对正则表达式所涉及到的表达符号做汇总记录
符号 | 描述 | 表达式例子 | 校验内容 | 例子结果 |
---|---|---|---|---|
. | 匹配一个字符且仅限一个字符 | 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 个匹配项 |
丨 | 或规则匹配 可以提取公共部分后采用括号包裹的方式匹配 `learn\s(java | php | go): learn java、 learn php` | AB丨CD |
(...) | 分组匹配 例:区号-电话号匹配规则 ^(\+\d{2})-(\d{11})$ ,括号分组 | ^(\+\d{2})-(\d{11})$ | +86-18000000000 | 共 1 个匹配项 |