ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式

2020-12-10 17:01:06  阅读:236  来源: 互联网

标签:regex String 正则表达式 System zA println out


正则表达式的组成规则
字符
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));//如果匹配返回true

正则表达式的分割功能
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);

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

正则表达式的获取功能
//取出长度为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
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);

标签:regex,String,正则表达式,System,zA,println,out
来源: https://www.cnblogs.com/lxs1204/p/14116083.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有