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); } }