正则表达式作用与规则
作用:用于操作字符串
例1:
QQ号码要求:5-10位,0不为开头,只由数字构成
如果不用正则表达式,而使用String类则代码繁琐:
package dayone;
public class helloworld {
public static void main(String[] args) {
//checkqq();
helloworld ob = new helloworld();
ob.checkqq();
}
public void checkqq() {
String qq = "99999012345";
int len = qq.length();
if(len>=5 && len<=10) {
if(!qq.startsWith("0")) {
char[] arr = qq.toCharArray();
boolean flag = true;
for(int x=0; x<arr.length; x++) {
if(!(arr[x]>='0' && arr[x]<='9')) {
flag = false;
break;
}
}
if(flag) {
System.out.println(qq+" pass");
}
else {
System.out.println("无效字符");
}
}
else {
System.out.println("不能0开头");
}
}
else {
System.out.println("长度不符");
}
}
}
结果输出长度不符
使用正则表达式:
package dayone;
public class helloworld {
public static void main(String[] args) {
checkqq();
}
public static void checkqq() {
String qq = "4364457667";
String regex = "[1-9][0-9] {4,14}";
boolean flag = qq.matches(regex);
if(flag)
System.out.println(qq+" is pass");
else
System.out.println("不符");
}
例2:
判断:19xx
正则:1 9 \d \d
java字符串:“19\\d\\d”(此处第一个\是对第二个\转义)
java代码:
String str="1998";
boolean is19xx=str.matches(""19\\d\\d"");
正则表达式就是用来描述规则的字符串(匹配字符串),可以用于任何语言
jdk内置正则表达式引擎:java.util.regex
记忆:英文单词matched(匹配的adj.匹配v)——>matches(匹配)
规则:
1.如何正确编写正则表达式:
-
精确匹配:“abc”
"abc"√
"Abc " “ab” “abcd” "acb"× -
特殊字符需要转义
精确匹配:“a\&c”
"a&c"√
"ab"×
“abc"×
编写Java代码为"a\\&c” -
精确匹配:“a\u548cc”,非ASCII字符如中文用\u####表示
"a和c"√
"a或c"×
"ab"×
"abc"× -
特殊符号.可以表示一个任意字符:“a.c”
"abc"√
"a&c"√
"ab"×
"a和c"×(一中文=两个字符) -
符号"\d"表示匹配一个数字:“00\d”
"007"√
"00a"×
"0077"×
"006"√ -
符号"\w"表示匹配一个字母、数字或者下划线:“Java\w”
"Javac"√
"Java3"√
"Java_"√
"Java&"×
"Java23"× -
符号"\W"表示匹配一个非“字母、数字或者下划线”:“Java\W”
"Javac"×
"Java3"×
"Java_"×
"Java&"√
"Java "√ -
符号"\s"表示匹配一个空白字符,tab键也算空白字符:“A\sB”
"A B"√(一个空格)
"A B"√(一个tab)
"AB"×(无空格)
"A B"×(两个空格) -
符号"\S"表示匹配一个非空白字符,tab键也算空白字符:“A\SB”
"A B"×(一个空格)
"A B"×(一个tab)
"A&B"√
"AcB"√ -
符号"\D"表示匹配一个非数字:“A\DB”
"AaB"√
"A#B"√
"A1B"×
"A2B"× -
符号"*"表示匹配任意个字符:“A\d*”
"A0&fcs"√
"A7343ds"√
"Ad243d"×
"A_eew2"×
"A&sdvsg"×
2020-8-19 0:41