字符串类中涉及正则表达式的常用方法
1、boolean match (String regex)告知此字符串是否匹配给定的正则表达式
例如:"abc".matches("[a]")匹配成功返回true
小案例:
举例:校验qq号码. 1: 要求必须是5-15位数字 2: 0不能开头
校验手机号码 1:要求为11位数字 2:第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字。
代码演示:下方代码的输出结果为:true true
package day16;
/*
* 实现正则规则和字符串进行匹配,使用到字符串类的方法
* String类三个和正则表达式相关的方法
* boolean matches(String 正则的规则)
* "abc".matches("[a]")
* String[]split(String 正则的规则)
* "abc".split("a")使用规则将字符串进行切割
* String replaceAll(String 正则的规则,String 字符串)
* "abc0123".replaceAll("[\\d]","#")
* 安装正则的规则,替换字符串
*/
public class RegexDemo01 {
public static void main(String[] args) {
checkQQ();
checkTel();
}
/*
* 检查手机号码是否合法
* 1开头可以是34578 0-9位数固定11位
*/
public static void checkTel(){
String telNumber="13351258005";
// String类的方法matches
boolean a=telNumber.matches("1[34578][0-9]{9}");//[34578]可以随意调换顺序
System.out.println(a);
}
/*
* 检查QQ号码是否合法
* 0不能开头,全数字,位数5,10位
* 123456
*/
public static void checkQQ(){
String QQ="123456";
// String regex="[1-9][0-9]{4,9}";
boolean a=QQ.matches("[1-9][0-9]{4,9}");//[0-9]可以换成\\d一个\代表的是转义
System.out.println(a);
}
}
2、String [] split (String regex) 根据给定正则表达式的匹配拆分此字符串
例如:"abc".split("a")使用规则将字符串进行切割
代码演示:下面代码的输出结果为:切割的次数为4 12 25 36
注意用“.”切割的话正则是“\\.”意思是把“.”转成了普通的点,因为“.”代表的是任意字符
public class RegexDemo02 {
public static void main(String[] args) {
spiltDemo();
spiltDemo1();
}
/*
* String类方法split对字符串进行切割
* 18 22 40 65按照-对字符串进行切割
*/
public static void spiltDemo1(){
String str="18 22 40 65";
String [] strArr=str.split(" +");//+加号删除多余的空格
System.out.println("切割的次数为"+strArr.length);
for(int i=0;i<strArr.length;i++){
System.out.println(strArr[i]);
}
}
/*
* String类方法split对字符串进行切割
* 12-25-36-98按照-对字符串进行切割
*/
public static void spiltDemo(){
String str="12-25-36-98";
//按照-对字符串进行切割,String类方法split
String [] strArr=str.split("-");
System.out.println("切割的次数为"+strArr.length);
for(int i=0;i<strArr.length;i++){
System.out.println(strArr[i]);
}
}
}
3、 String replaceAll(String regex,String replacement) 将符合规则的字符串内容,全部替换为新字符串
例如:"abc0123".replaceAll("[\\d]","#")把满足数字的字符串替换成#号
下面代码的输出结果为:Hello#####World#######
package day16;
public class RegexDemo03 {
public static void main(String[] args) {
replaceAll();
}
/*
* "Hello12345World6789012"将所有数字替换掉
* String类方法replaceAll(正则规则,替换后的新字符串)
*/
public static void replaceAll(){
String str="Hello12345World6789012";
String a=str.replaceAll("[\\d+]", "#");//[\\d]+多个#换成了一个#号
System.out.println(a);
}
}
匹配正确的数字:
匹配规则:
匹配正整数:”\\d+”
匹配正小数:”\\d+\\.\\d+”
匹配负整数:”-\\d+”
匹配负小数:”-\\d+\\.\\d+”
匹配保留两位小数的正数:”\\d+\\.\\d{2}”
匹配保留1-3位小数的正数:”\\d+\\.\\d{1,3}”
匹配合法的邮箱
匹配规则:
”[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+”
”\\w+@\\w+(\\.\\w+)+”
获取IP地址(192.168.1.100)中的每段数字:”\\.”