正则表达式是独立于任何编程语言,大多数的编程语言都支持正则表达式的使用,只要用于字符匹配。
    正则有自己的语法:
    正则表达式的特点

    • 一个正则表达式就是一个描述规则的字符串
    • 只要编写正确的语法规则,就可以让正则表达式的引擎去判断目标字符串是否符合规则
    • 正则表达式是一套通用的规范,任何语法都适用
    • JDK内置了正则表达式引擎,在java.util.regex包内

    先看一个例子 :输入一个手机号:
    public static void main(String[] args) {
    //客户端输入一个手机号 ,验证手机号是否符合规则 1 [3,4,5,6,7,8,9] 9个数字
    Scanner sc = new Scanner(System.in);
    System.out.println(“请输入手机号:”);
    String tel = sc.next();

    1. if(tel.length() != 11){<br /> System.out.println("手机号不符合规则");<br /> }else {<br /> String reg = "^1[3456789]\\d{9}$"; // 1[3-9][0-9]{9}<br /> if(tel.matches(reg)){<br /> System.out.println("手机号满足规则:"+tel);<br /> }else {<br /> System.out.println("手机号不满足规则:"+tel);<br /> }<br /> }<br /> System.out.println("请输入用户名:(用户名不能是数字开始)");<br /> String name = sc.next();<br /> String reg = "^\\D\\w{6,10}";<br /> if(name.matches(reg)) {<br /> System.out.println("OK :"+name);<br /> }else {<br /> System.out.println("No OK :"+name);<br /> }
    2. //判断输入的年份是不是以 20开始 :<br /> String reg1 = "^20[0-9]{2}$"; //20\\d{2}

    }
    public static void main(String[] args) {
    // 判断用户输入的年份是否是20xx年
    String year = “2099”;
    boolean matches = year.matches(“20[0-9]{2}”);
    System.out.println(matches);

    // 匹配手机号码"18817382567";<br />    String mobile = "19917382568";<br />    boolean matches2 = mobile.matches("1[3-9]\\d{9}");<br />    System.out.println(matches2?"手机格式正确":"非法的手机号码");
    
    // 匹配年月日格式的字符串     2021-03-16<br />    String date = "2021-10-00";<br />    boolean matches3 = date.matches("\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])");<br />    System.out.println(matches3);
    
    // 邮箱验证<br />    String email = "jack.ma@alibaba.edu";<br />    boolean matches4 = email.matches("[0-9A-Za-z][0-9A-Za-z\\._]*@[a-zA-Z0-9]+\\.(com|edu|cn)");<br />    System.out.println(matches4);<br />}
    
    正则表达式 规则 可以匹配
    a 指定字符 a
    \u4e2d 指定的unicode字符
    . 任意字符 a,A,$,#,&,!
    \d 0-9数字 0,1,2….9
    \w 数字,字母,下划线 a-z A-Z 0-9 _
    \s 空格 Tab键 “ “
    \D 非数字 A a &#!
    \W 非\w(非数字,字母,下划线) !@#¥
    \S 非\s (非空格 Tab) a A &
    AB* 匹配零个或多个B A AB ABB ABBB
    AB+ 匹配一个或多个B AB ABB ABBB
    AB? 匹配零个或一个B A AB
    AB{3} 让B重复出现3次 ABBB
    AB{1,3} 让B至少出现1次,最多出现3次 AB ABB ABBB
    AB{2,} 让B至少出现2次 ABB ABBB ABBBB
    AB{0,3} 让B最多出现3次 A AB ABB ABBB

    正则表达式匹配:
    正则表达式 - 图1
    把正表达式编译成对象 :
    public class TestPattern {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println(“请输入手机号:”);
    String tel = sc.next();

    String reg = “^1[3-9]\d{9}$”;
    //创建正则表达式对象
    Pattern pattern = Pattern.compile(reg);
    //通过和 字符串的 边比较 得到一个匹配对象
    Matcher matcher = pattern.matcher(tel);
    //利用matcher对象 比较 字符串和正则的匹配
    boolean f = matcher.matches();

    if(f) {
    System.out.println(“OK”);
    }else {
    System.out.println(“不 OK”);
    }
    }
    }