正则表达式
概念
简而言之,正则表达式就是对字符串进行定义和校验的工具
正则表达式及其匹配的字符串的格式
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;
/*本类用于使用正则表达式校验身份证号
* 主要使用一个新的方法:
* matches()-----此方法主要去判断输入的数据与定义的正则表达式是否匹配*/
public class TestRegex2 {
public static void main(String[] args) {
//1.身份证号的规则:一共有18位;前17位为数字,最后一位可能是数字,也可能是X
//2.编辑正则表达式
String regex = "[0-9]{17}[0-9X]";
//3.定义一个变量,用于接收用户输入的值
String input;
/*4.判断用户输入的数据是否与正则表达式匹配,如果不正确则继续输入,
至少执行一次,然后进行判断,所以使用do-while结构*/
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;
/*4.判断用户输入的数据是否与正则表达式匹配,如果不正确则继续输入,
至少执行一次,然后进行判断,所以使用do-while结构*/
do {
System.out.println("请您输入手机号:");
input = new Scanner(System.in).nextLine();
//判断是否正确,如果正确,循环结束
if(input.matches(regex)){
System.out.println("恭喜您!输入正确");
return;
}
}while (!input.matches(regex));//只要不符合正则,就循环继续输入
}
}