简而言之,正则表达式就是对字符串进行定义和校验的工具
正则表达式及其匹配的字符串的格式w-----必须匹配指定字符w
abc-----必须匹配指定字符abc
[qwe]-----只匹配其中单个的字符
[ljx][125]-----两个里面各取一个进行组合
[a-z]-----匹配26个小写字母
[A-Z]-----匹配26个大写字母
[0-9]-----匹配1位数字
[a-z0-9A-Z]-----匹配三种里面的任意一个字符
d-----数字,相当于[0-9]
D-----排除数字,相当于[^0-9]
s-----空白字符
S-----排除空白字符
w-----字母数字下划线,相当于[a-zA-Z0-9_]
W-----排除字母数字下划线,相当于[^a-zA-Z0-9_]
. ------匹配任意单个字符
?-----表示出现0次或者1次
*-----表示出现0次或者多次
+-----表示出现的次数>=1次
{3}-----表示出现的次数,此处为3次
正则表达的两个应用
用正则表达式校验身份证号
package cn.tedu.api;
import java.util.Scanner;
public class TestRegex2 {
public static void main(String[] args) {
//1.身份证号的规则:一共有18位;前17位为数字,最后一位可能是数字,也可能是X
//2.编辑正则表达式
String regex = "[0-9]{17}[0-9X]";
//3.定义一个变量,用于接收用户输入的值
String input;
do {
System.out.println("请您输入身份证号:");
input = new Scanner(System.in).nextLine();
//判断是否正确,如果正确,循环结束
if(input.matches(regex)){
System.out.println("恭喜您!输入正确");
return;
}
}while (!input.matches(regex));//只要不符合正则,就循环继续输入
}
}
用正则表达式校验手机号
package cn.tedu.api;
import java.util.Scanner;
public class TestRegex3 {
public static void main(String[] args) {
//1.手机号的规则:一共有11位;不能以0开头;
// 规定:第一位为1.第二位为3或者8,其余位为数字即可
//2.编辑正则表达式
String regex = "1[38][0-9]{9}";
//3.定义一个变量,用于接收用户输入的值
String input;
do {
System.out.println("请您输入手机号:");
input = new Scanner(System.in).nextLine();
//判断是否正确,如果正确,循环结束
if(input.matches(regex)){
System.out.println("恭喜您!输入正确");
return;
}
}while (!input.matches(regex));//只要不符合正则,就循环继续输入
}
}



