文章目录
一、正则匹配基本规则
符合 | 说明 |
---|---|
^ | 起始位置 |
| | 表示或 |
\ | 表示转义 |
? | 匹配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 | 匹配空白符合换行 |
\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}$