1、正则表达式
正则表达式(Regular Expression)简写为regex、regexp或RE。
(1)基本规则:
字符类:
[abc] 为abc三个字符中的其中一个。
[^abc]除了abc三个字符以外的其他字符。
[a-z A-Z]大写字母或小写字母。
[0-9]一个数字。
[a-zA-Z_0-9]字母、数字、下划线。
(2)预定义字符类:
一个点:代表任意字符
\d:相当于 [0-9]一个数字
\w: 相当于 [a-zA-Z_0-9]字母、数字、下划线
(3)数量词:
x? x出现一次或零次
x* 零次或多次
x+ 一次或多次
x{n} 出现n次
x{n,}至少n次
x{n,m}n到m次
(4)实例:
创建正则表达式类,其中共有三个方法,对手机号、QQ号、密码进行匹配:
public class RegexDemo {
public void checkTel(String str){
String telNumber = str; //String类的方法matches
boolean b = telNumber.matches("1[34857][\\d]{9}");
System.out.println(b);
}
//第一位必须为1第二位必须尾34857中的一个,后9位为数字
public void checkQQ(String str){
String QQ =str;//检查QQ号码和规则是否匹配,String类的方法matches
boolean b = QQ.matches("[1-9][\\d]{4,9}");
System.out.println(b);
}
//第一位位1-9数字,后面有4-9位,且全为数字
public void checkPassWord(String str) {
String PassWord=str;
boolean b=PassWord.matches("[a-zA-Z_0-9]{6}");
System.out.println(b);
}
//密码共有六位,为字母数字下划线
}
测试类:
import java.util.Scanner;
public class Test extends RegexDemo {
public static void main(String[] args) {
RegexDemo re=new RegexDemo();
Scanner sc1=new Scanner(System.in);
System.out.println("请输入您的QQ号码:");
String str1=sc1.nextLine();
re.checkQQ(str1);
Scanner sc2=new Scanner(System.in);
System.out.println("请输入您的手机号码:");
String str2=sc2.nextLine();
re.checkTel(str2);
Scanner sc3=new Scanner(System.in);
System.out.println("请输入您的密码:");
String str3=sc3.nextLine();
re.checkPassWord(str3);
}
}