正则表达式

正则表达式的组成规则
字符
x 字符 x正则表达式

字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否认)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)测试

预约义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]对象

Greedy 数量词
X? X,一次或一次也没有
X* X,零次或屡次
X+ X,一次或屡次
X{n} X,刚好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,可是不超过 m 次字符串

正则表达式的判断功能
public boolean matches(String regex) 通知此字符串是否匹配给定的正则表达式。
//正确校验手机号:组成规则是 长度是11,以1开头,第二位是3或5或8
String tel="158858880644";
//定义规则:1表示第一位只能是1,[358]表示第二位只能是3或5或8,
//剩下的是0--9之间的任意数字,手机号刚好是11位,因此,剩下的刚好是9次
//因此对应写法就是[0-9]{9}
String regex ="1[358][0-9]{9}";
System.out.println(tel.matches(regex));//若是匹配返回trueget

正则表达式的分割功能
public String[] split(String regex) 根据给定的正则表达式的匹配来拆分此字符串。
String str ="张三-李四-王五";
//定义规则
String regex="-";
String[] arr = str.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}域名

正则表达式的替换功能
public String replaceAll(String regex,String replacement) 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每一个子字符串。
String s ="112233";
String s2 = s.replaceAll("11","99");
System.out.println(s+"将11替换为99替换后为:"+s2);it

String str="zhangssssqingzzzlun";
String s = str.replaceAll("(.)\1+", "@");
System.out.println(str+"将叠词替换成@替换后为::"+s);email

正则表达式的获取功能
//取出长度为3的单词
String str ="da jia hao wo shi zhang qing lun wo cao !";
//将规则封装成对象,\b表示单词的边界,[a-zA-Z]{3}表示字母刚好出现3次
Pattern p = Pattern.compile("\b[a-zA-Z]{3}\b");
//获得匹配器对象
Matcher m = p.matcher(str);
while(m.find()) {//m.find();含有下一个匹配的元素
System.out.println(m.group());//取出匹配的元素
}qq

正则案例while

正则校验QQ
String qq="1234567894567845678";
//[1-9]表示第一位只能是1--9,不包含0
//[0-9]{4,14}表示0--9至少出现4次,最多出现14次,
//由于要求是5--15次,除去第一位,因此是4--14
String s ="[1-9][0-9]{4,14}";
System.out.println(qq.matches(s));

结果说明:只有知足该正则的字符串返回值才是true
咱们在作测试时,各类状况都要测试,也就是咱们的测试:好比:
1.第一位为0的状况
2.长度不足5位或者超出15位
3.含有字母等
4.正确演示

正则校验手机
//正确校验手机号:组成规则是 长度是11,以1开头,第二位是3或5或8
String tel="158858880644";
//定义规则:1表示第一位只能是1,[358]表示第二位只能是3或5或8,
//剩下的是0--9之间的任意数字,手机号刚好是11位,因此,剩下的刚好是9次
//因此对应写法就是[0-9]{9}
String regex ="1[358][0-9]{9}";
System.out.println(tel.matches(regex));//若是匹配返回true

结果说明:只有知足该正则的字符串返回值才是true
测试时应该涵盖全部的状况。

正则校验邮箱
//用户名@域名
例如:116zql@jiyun.com 116zql@jiyun.com.cn 116zql@jiyun.com.cn.org
String email="116zql@jiyun.com.cn";
//[a-zA-Z_0-9]+@[a-zA-Z0-9]+表示用户名
//(\.[a-zA-Z]{2,3}){1,3}表示域名,{2,3}表示相似com,cn这样的域名单词字符数
{1,3}表示com,cn这样的域名只能出现1—3次
String regex="[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\.[a-zA-Z]{2,3}){1,3}";
System.out.println(email.matches(regex));
// 结果:true

正则分割字符串
String str ="张三---李四------王五-赵六--周七";
//定义规则。"-+"表示"-"出现一次或者屡次
String regex="-+";
String[] arr = str.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

正则屏蔽敏感词汇
//手机号隐藏中间四位
String s ="13885888064";
//344类型的手机号,前三位第一组,中四为第二组,后四为第三组
//将中间的用替换,第一种组和第三组不变,不一样的正则之间使用组是经过$+组名 String s2 = s.replaceAll("(\d{3})\d{4}(\d{4})", "$1$2"); System.out.println(s2);

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息