关于Java中的正则表达式匹配


在线正则表达式网址:https://any86.github.io/any-rule/

注意:

  在网站复制正则表达式使用的时候,要将第一个'/'跟最后一个'/'替换称为括号

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:

    Pattern:Pattern是一个正则表达式经编译后的表现模式

    Matcher:Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查

public static void main(String[] args) {
    /*定义要进行验证的手机号码*/
    String cellPhoneNumber = "15817784252";
    /*定义手机号码正则*/
    String phoneRegex = "(^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[189]))\\d{8}$)";
    /*
      第一种:使用String类
      说明此字符串是否与给定的正则表达式匹配。
      参数: regex–此字符串要与之匹配的正则表达式
      返回值: 当且仅当此字符串与给定正则表达式匹配时为true
     */
    boolean stringMatches = cellPhoneNumber.matches(phoneRegex);
    System.out.println("使用String类进行比较结果:" + stringMatches);

    /*第二种:使用Pattern
     * 将给定的正则表达式编译为模式。
     * 参数: regex–要编译的表达式
     * 返回值: 已编译为模式的给定正则表达式
     * */
    Pattern pattern = Pattern.compile(phoneRegex);
    /*创建一个匹配器,该匹配器将根据此模式匹配给定的输入。 参数: 输入–要匹配的字符序列*/
    Matcher matcher = pattern.matcher(cellPhoneNumber);
    /*字符串是否与正则表达式相匹配*/
    boolean patternMatches = matcher.matches();
    System.out.println("使用Pattern类的matcher进行比较结果:" + patternMatches);

    /*第三种:使用Pattern的两个参数构造器
    * 参数1: 正则表达式
    * 参数2: 要匹配的字符序列
    * 返回值: 正则表达式是否与输入匹
    * */
    boolean constructorMatches = Pattern.matches(phoneRegex, cellPhoneNumber);
    System.out.println("使用Pattern类的matcher重载进行比较结果" + constructorMatches);
}