由一些特定的字符组成,代表的是一个规则。
作用:1.校验数据是否合法。2.可以在一段文本中查找满足要求的内容。
正则表达式的代码暂时可以不去理解。
package com.itheima.d2_regex;
/*
* 需求:校验qq号是否正确,要求全部是数字,长度6-20之间,qq号不能以0开头。
*/
public class RegexTest1 {
public static void main(String[] args) {
System.out.println(checkQQ(null));//false
System.out.println(checkQQ("12345697"));//true
System.out.println(checkQQ("45158481d22"));//false
System.out.println("-------------------------------------");
System.out.println(checkQQ(null));//false
System.out.println(checkQQ("12345697"));//true
System.out.println(checkQQ("45158481d22"));//false
}
//正则表达式校验 暂时可以不用理解其中的代码 明显正则表达式更简洁
public static boolean checkQQ1(String qq){
return qq != null && qq.matches("[1-9]\\d{5,19}");
}
//自己写方法去判断
public static boolean checkQQ(String qq){
//判断qq号码是否为null,长度符合要求,是否为以0开头。
if (qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){
return false;
}
//判断qq号中全是数字
for (int i = 0; i < qq.length(); i++) {
char ch = qq.charAt(i);//根据索引提取字符(charAt())
if (ch < '0' || ch > '9'){
return false;
}
}
return true;
}
}
明显正则表达式更简洁更好用。
String类提供了一个匹配正则表达式的方法:
public boolean matches(String regex) //判断字符串是否匹配正则表达式
讲解加举例全在里面:
package com.itheima.d2_regex;
public class RegexTest2 {
public static void main(String[] args) {
//1.字符类(只能匹配单个字符) [abc] 3选1 [^abc] 不能是abc其一 [a-zA-Z] 只能是a-z A-Z 之间的字符
//[a-z&&[^bc]] a到z,除了bc
//举例:
System.out.println("b".matches("[a-zA-Z]"));//true
//2.预定义字符(只能匹配单个字符) . \d \D \s \S \w \W 大写跟小写的区别:取反
// . 匹配任意字符 \d 0-9 \s 代表一个空白字符 \w 代表[a-zA-Z_0-9],包含大小写,下划线,0-9之间的数字。
//举例:
//在Java中,\是有特殊用途的,例如特殊字符:\n \t ,这是把\n \t当成整体一个字符看
System.out.println("1".matches("\\d"));//这里我们希望\就是\,而不是整体\d,就需要转义字符\ 转义单个反斜杠
//这里如果你用\d,会解析成整体,但是没有\d的具体意义,所以要用(第一个反斜杠)\把(第二个反斜杠) \ 转义,这样\d就不会当成整体了。
//输出true
//3.数量词: ? 代表0次或者一次 * 代表0次或者多次 + 代表 1次或者多次 {n} 代表正好n次 {n,} 代表>=n次 {n,m} 代表>=n,<=m次
//举例:
System.out.println("abc232d".matches("\\w{3,9}"));//true
//4.其他几个常用的符号:(?i)忽略大小写,固定写法 或:| 分组:()
System.out.println("ABC".matches("(?i)abc"));//true
System.out.println("Abc".matches("a((?i)b)c"));//false 这个忽略大小写只针对于b而言,注意看范围即可。
//需求:必须是“我爱”开头,中间至少有一个“编程”,最后至少一个“666”
System.out.println("我爱编程编程666666".matches("我爱(编程)+(666)+"));//true 至少有一次(666)+,加号代表1次或者多次
System.out.println("我爱编程编程6666666".matches("我爱(编程)+(666)+"));//false 这里666要成对出现,格式不对,所以false
}
}