最近项目中有涉及到字符串的切割验证,因此要用到正则表达式,这篇文章主要介绍正则通配符和数量词的在正则匹配时的用法。一定要区别正则通配符和MYSQL模糊查询通配符的区别
通配符
通配符顾名思义就是根据字符串内容来进行匹配,它是一种规范的表达
校验代码
String email = "abc1";
String regex = "[^21]bc1";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
boolean isMatched = matcher.matches();
if (isMatched) {
System.out.println("邮箱格式正确!");
} else {
System.out.println("邮箱格式错误!");
}
1、.:匹配任意一个字符
2、[ ]:表示元素集合。匹配元素集合中的某一个字符
通常可以和连字符:”-“一起使用
[0-9]:匹配一个0-9之间的数字
[a-zA-z]:匹配一个非英文字母的字符,例如:!、@、#
3、-:连字符。通常在[]中表示字符范围
注意:在编程语言的正则中,""下划线不是通配符,没有任何特殊含义,它仅仅代表自己;但是在MYSQL的模糊匹配中""是通配符,相当于正则中的"."
4、():组合。将1个或多个字符括起来形成一个组合去匹配
5、^:两种用法
【1】和[]一起用,表示排除效果:匹配一个不存在[]元素集合中的元素
"abc123" regex "[^123]bc123" true
"abc123" regex "[^ab]c123" false
【2】不在[]内部,表示以……开头
"abc123" regex ^(abc)123 true
"abc123" regex ^[a-z]{3}123 true
6、$:以……结尾
"abc123" regex ^[abc]{3}12[0-9]$ true
"abc123" regex ^[abc]{3}12[0-9]$ true
数量词
1、{}:数据范围,表示前面的字符重复次数
{n} 前面的字符重复出现n次
{n,m} 前面的字符重复出现n-m次
{n,} 至少重复出现n遍
{,m} 至多重复出现m遍
"abaac" regex "a[a-z][a-z]{2}c" true
2、+:1次或多次,至少出现一次
"abc123" regex [A-Z]+[a-z]c123 false
"abc123" regex [a-z]+[a-z]c123 true
3、?:0次或1次
"abc123" regex [0-9]?[a-z]+[a-z]c123 true
"abc123" regex [0-9]+[a-z]+[a-z]c123 false
4、*:0次或多次
"abc123" regex [0-9]*[a-z]*[0-9]* true
.* 相当于MYSQL模糊查询中的 %