文章目录
一、正则匹配基本规则
| 符合 | 说明 |
|---|---|
| ^ | 起始位置 |
| | | 表示或 |
| \ | 表示转义 |
| ? | 匹配0~1次 |
| + | 匹配1~N次 |
| * | 匹配0~N次 |
| {n} | 匹配内容出现n次 |
| {n,m} | 匹配内容出现n到m次 |
| [] | 表示在集合中,匹配包含集合中的任意一个字符 |
| [^] | 表示不在集合中,匹配不包含集中的任意一个字符 |
| () | 在正则复杂的时候,可以方便区分对应的正则表达式,可以加匹配次数 |
| [0-9] | 匹配数字,匹配出结果是单个数字。 |
| \d | 匹配数字,匹配出结果是单个数字。等同于[0-9] |
| [a-zA-Z]+ | 匹配英文字符,匹配出结果是连续直到出现非英文字符 |
| \w | 匹配英文字符和数字以及下划线。等同于[a-zA-Z0-9_] |
| \W | 匹配所有,不包含英文和数字以及下划线。等同于[^a-zA-Z0-9_] |
| \s | 匹配空白符合换行 |
| . | 匹配除换行符(\n)外的任意单个字符 |
| \S | 匹配所有字符,不包含空白符和换行 |
| [\u4e00-\u9ffa]* | 匹配中文,匹配出结果是连续的,直到出现非中文字符 |
| ?= | 匹配结尾是当前表达式的内容(表达式的内容不显示) |
| ?<= | 匹配开头是当前表达式的内容(表达式的内容不显示) |
| ?! | 匹配结尾不是当前表达式的内容(表达式的内容不显示) |
| ?<! | 匹配开头不是当前表达式的内容(表达式的内容不显示) |
二、使用步骤
匹配英文数字以及下划线
等同效果:[a-zA-Z0-9_]+
反义效果:[\W]+ 或是[^a-zA-Z0-9_]+

匹配除数字、英文、下划线之外所有字符
等同效果:[^a-zA-Z0-9_]+
反义效果:[\w]+ 或是[a-zA-Z0-9_]+

匹配空白符合换行
因空白符和换行,是特殊字符。不能显示出来
等同效果:[\r\n ]+
反义效果:[\W]+ 或是 [^\r\n ]+

匹配除空白符合换行之外的所有字符
等同效果:[^\r\n ]+
反义效果:[\w]+ 或是 [\r\n ]+

金额和比例以及手机号
(-?[0-9,]+.[0-9]+元)|(-?[0-9,]+.[0-9]+%)|([0-9]{11})
说明: (-?[0-9,]+.[0-9]+元) 表示-出现0到1次。0至9和, 至少出现一次。 小数点必须出现1次。 小数位至少出现一次。

[…] 匹配到的内容在当前的集合中
[\u4e00-\u9ffaa-zA-Z0-9]+ 表示字符集中存在中文字符或英文字符或数字。其中+表示显示1最少一次。

[^…] 匹配到的内容不在当前集合中
代码如下(示例):
匹配前或后必须存在特定值的才能匹配成功
(?<=[”]?)[a-zA-Z0-9\u4e00-\u9ffa]+(?=[\\(”])
(?<=[\\(”]?) 前面可以存在一个双引号。
[a-zA-Z0-9\u4e00-\u9ffa]+ 中间部分是中文和英文字母和数字必须出现
(?=[\\(”]) 后面必须出现一次双引号或是括号(

匹配前或后不存在特定值的才能匹配成功
(?<=[”]?)[a-zA-Z0-9\u4e00-\u9ffa]+(?=[\\(”])
(?<=[\\(”]?) 前面可以存在一个双引号。
[a-zA-Z0-9\u4e00-\u9ffa]+ 中间部分是中文和英文字母和数字必须出现
(?=[\\(”]) 后面必须出现一次双引号或是括号(
注意
正则匹配是有顺序的,如果字符串有被第一个匹配到,而下一个正则需要上一个正则匹配的部分内容,即使看起来是满足正则当前正则表达式,也是匹配不到对应内容。正则表达式验证地址
匹配数字和百分比
从下图可以看到10%未匹配到。但是看起来满足(\d+%)的正则匹配

对应只有一个用来匹配10%的(\d+%)

密码必须包含小写字母、数字、大写字母,长度8到10
(?=.*\d)前面任意字符,后面跟数字
(?=.*[a-z]) 前面任意字符,后面跟小写字母
(?=.*[A-Z])前面任意字符,后面跟大写字母
(?=exp1exp2) 前面必须存在exp1,但是不显示。匹配出结果exp2
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ 判断不作为首位,相当于^[a-zA-Z0-9]{8,10}$

?=结尾和当前表达式匹配
当前表达式的内容不显示在,匹配出来的内容中

?<=开始和当前表达式匹配
当前表达式的内容不显示在,匹配出来的内容中

?<! 开头位置不是当前表达式的内容
当前表达式的内容不显示在,匹配出来的内容中

?! 结尾位置不是当前表达式的内容
当前表达式的内容不显示在,匹配出来的内容中



6456

被折叠的 条评论
为什么被折叠?



