上一篇:使用正则必备标记 | 带你学《Java语言高级特性》之二十四
了解了正则表达式的相关内容,可以发现正则表达式服务于字符串,而Java中String类也针对正则表达式提供了一系列的便捷方法以供调用,让我们一起来使用正则快速处理字符串吧。
【本节目标】
通过阅读本节内容,你将接触到String类针对正则表达式所提供的一系列操作方法,并结合实例代码对其功能有了初步的理解,学会在开发过程中运用这些方法实现字符串的快捷操作。
String类对正则的支持
在进行正则表达式大部分处理的情况下都会基于String类来完成,并且在String类里面提供有如下与正则有关的操作方法:
No | 方法名称 | 类型 | 描述 |
---|---|---|---|
01 | Public boolean matches(String regex); | 普通 | 将指定字符串进行正则判断 |
02 | public String replaceAll(String regex, String replacement); | 普通 | 替换全部 |
03 | public String replaceFirst(String regex, String replacement); | 普通 | 替换首个 |
04 | public String[] split(String regex); | 普通 | 正则拆分 |
05 | public String[] split(String regex, int limit); | 普通 | 正则指定个数拆分 |
下面通过一些具体范例来对正则的使用进行说明。
范例:实现字符串的替换(删除非字母与数字)
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "JILO&*()@#$UISD&*(#$HUK34rwyhui*()@#$*()@#$"; //要判断的数据
String regex = "[^a-zA-Z0-9]+"; //正则表达式
System.out.println(str.replaceAll(regex, ""));//JILOUISDHUK34rwyhui
}
}
范例:实现字符串的拆分
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "a1b22c333d4444e55555f666666g";
String regex = "\\d+";
String result[] = str.split(regex);
for (int x = 0 ;x < result.length ; x ++) {
System.out.println(result[x] + "、"); //a、b、c、d、e、f、g、
}
}
}
在正则处理的时候对于拆分和替换的操作相对容易一些,但是比较麻烦的是数据验证的部分。
范例:判断一个数据是否为小数,如果是小数则将其变为double类型
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "100.32"; //要判断的数据
String regex = "\\d+(\\.\\d+)?"; //正则表达式
System.out.println(str.matches(regex));
}
}
范例:判断一个字符串是否由日期所组成,如果是由日期所组成则将其转为Date类型
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "1981-10-15 "; //要判断的数据
String regex = "\\d{4}-\\d{2}-\\d{2}"; //正则表达式
if (str.matches(regex)) {
System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str));
}
}
}
需要注意的是,正则表达式无法对里面的内容进行判断,只能够对格式进行判断处理。
范例:判断给定的号码是否正确
- 电话号码:51283346、\\d{7,8};
- 电话号码:01051283346、(\\d{3,4})?\\d{7,8};
- 电话号码:(010)-51283346、((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8};
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String strA = "51283346";
String strB = "01051283346";
String strC = "(010)-51283346";
String regex = "((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";//正则表达式
System.out.println(strA.matches(regex));
System.out.println(strB.matches(regex));
System.out.println(strC.matches(regex)); //true
}
}
既然已经可以使用正则进行验证了,那么下面就可以利用其来实现一个email地址格式的验证。
范例:验证email格式
- email的用户名可以由字母、数字、_所组成(不应该使用“_”开头);
- email的域名可以由字母、数字、_、-所组成;
- email的域名后缀必须是:.cn、.com、.net、.com.cn、.gov;
邮箱正则分析
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str="mldnjava888@mldn.cn";
String regex="[a-zA-Z0-9]\\w+@\\w+\\.(cn|com|net|com\\.cn|gov)";
System.out.println(str.matches(regex));
}
}
以上这几种匹配处理操作是最常用的几种处理形式。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学
下一篇:借助regex包完成正则高级操作 | 带你学《Java语言高级特性》之二十六
更多Java面向对象编程文章查看此处