一:正则表达式概述
正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。正则表达式可以在文本中查找、替换、提取和验证特定的模式。
正则表达式是在Java.util这个包下的,它在API文档中查找的方式:
1.打开JavaAPI文档
2.点击显示
3.在搜索框中输入pattern,并回车搜索
4.在搜索的结果里找到这个java.util.regex.Pattern
5.点击进入这个包后得到结果,结果如下
二:正则表达式的作用
简单来说,正则表达式的作用有两个。
作用1:检验字符串是否满足规则
作用2:在一段文本中查找满足要求的内
三:正则表达式的介绍内容
这里介绍正则表达式主要依次是从字符类、预定义字符类、数量词、在字符串方法中的使用等方面介绍。
四:正则表达式的引入
在这里通过验证手机号码来引入正则表达式
在这里首先通过定义一个方法来验证手机号是否正确,接着在使用正则表达式
首先利用定义一个方法来检验手机号码是否正确,截图如下:
然后在main方法调用方法来验证是否符合规则。
运行结果如下;
可以看到前两个手机号码定义的是正确的,而后两个一个出现了字母,另一个以0开头了所以是false。
接着利用正则表达式来验证:
来看运行结果
我们发现利用正则表达式来检验比自己定义一个方法更加简单。
整体代码如下:
/*需求:验证手机号是否正确
手机号码必须是11位
而且全部是数字
手机号开头不能为0
*/
String phoneNumber1 = "18724564823";
String phoneNumber2 = "18724564823";
String phoneNumber3 = "187a4564823";
String phoneNumber4 = "08724564823";
System.out.println(checkPhoneNumber(phoneNumber1));
System.out.println(checkPhoneNumber(phoneNumber2));
System.out.println(checkPhoneNumber(phoneNumber3));
System.out.println(checkPhoneNumber(phoneNumber4));
System.out.println("---------------------------");
//调用matches方法来检验
System.out.println(phoneNumber1.matches("[1-9]\\d{10}"));
System.out.println(phoneNumber2.matches("[1-9]\\d{10}"));
System.out.println(phoneNumber3.matches("[1-9]\\d{10}"));
System.out.println(phoneNumber4.matches("[1-9]\\d{10}"));
}
public static boolean checkPhoneNumber(String phoneNumber){
//手机号的规则 ; 手机号码必须是11位 而且全部是数字 手机号开头不能为0
//1.验证手机号的长度
//定义一个变量len来表示手机号码的长度
int len = phoneNumber.length();
//通过if判断语句来验证长度是否符合规则
if(len < 11 || len > 11 ){
return false;
}
//0不能在开头
if(phoneNumber.startsWith("0")){
return false;
}
//而且全部是数字
//遍历循环得到字符串里每一个索引字符,然后判断是否是数字
for(int i = 0;i < phoneNumber.length();i++){
char c = phoneNumber.charAt(i);
//接着判断每一个字符
if(c < '0' | c > '9'){
return false;
}
}
return true;
}
五:正则表达式之字符类
上面的&&表示前后两个的交集
演示代码及结果如下:
public static void main(String[] args) {
// 只能是b c d
System.out.println("c".matches("[bcd]")); // true
System.out.println("z".matches("[bcd]")); // false
// 不能出现a b c
System.out.println("------------------------");
System.out.println("a".matches("[^abc]")); // false
System.out.println("z".matches("[^abc]")); // true
System.out.println("zz".matches("[^abc]")); //false
System.out.println("zz".matches("[^abc][^abc]")); //true
// a到zA到Z(包括头尾的范围)
System.out.println("------------------------");
System.out.println("a".matches("[a-zA-z]")); // true
System.out.println("z".matches("[a-zA-z]")); // true
System.out.println("aa".matches("[a-zA-z]"));//false
System.out.println("zz".matches("[a-zA-Z]")); //false
System.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //true
System.out.println("0".matches("[a-zA-Z]"));//false
System.out.println("0".matches("[a-zA-Z0-9]"));//true
// [a-d[m-p]]
System.out.println("------------------------");
System.out.println("a".matches("[a-d[m-p]]"));//true
System.out.println("d".matches("[a-d[m-p]]")); //true
System.out.println("m".matches("[a-d[m-p]]")); //true
System.out.println("p".matches("[a-d[m-p]]")); //true
System.out.println("e".matches("[a-d[m-p]]")); //false
System.out.println("0".matches("[a-d[m-p]]")); //false
// [a-z&&[def]]
System.out.println("----------------------");
System.out.println("a".matches("[a-z&[def]]")); //false
System.out.println("d".matches("[a-z&&[def]]")); //true
System.out.println("0".matches("[a-z&&[def]]")); //false
// [a-z&&[^bc]]
System.out.println("-----------------------_");
System.out.println("a".matches("[a-z&&[^bc]]"));//true
System.out.println("b".matches("[a-z&&[^bc]]")); //false
System.out.println("0".matches("[a-z&&[^bc]]")); //false
// [a-z&&[^m-p]]
System.out.println("------------------------");
System.out.println("a".matches("[a-z&&[^m-p]]")); //true
System.out.println("m".matches("[a-z&&[^m-p]]")); //false
System.out.println("0".matches("[a-z&&[^m-p]]")); //false
}