【问题标题】:Invalid regular expression java : unclosed character class无效的正则表达式java:未封闭的字符类
【发布时间】:2015-04-02 20:34:42
【问题描述】:

我正在尝试使用 java 中的 emailValidator 函数,但我遇到了问题:

public static boolean EmailValidator(String mail) {
    Pattern pattern;
    Matcher matcher;

    pattern = Pattern.compile("^[A-Za-z0-9\\]{2,2}(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]{2,2}(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,4})$");
    matcher = pattern.matcher(mail);

    return matcher.matches();
}

错误

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 89
^[A-Za-z0-9\]{2,2}(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]{2,2}(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,4})$

谁能告诉我该怎么做才能解决这个问题,非常感谢

【问题讨论】:

    标签: java regex email email-validation


    【解决方案1】:

    你已经转义了开头的结束字符类字符:

    ^[A-Za-z0-9\\]
    

    记住,在字符串解释之后变成:

    ^[A-Za-z0-9\]
    

    由于您可能想要包含反斜杠,因此请尝试对其进行双重编码:

    ^[A-Za-z0-9\\\\]
    

    变成转义的反斜杠:

    ^[A-Za-z0-9\\]
    

    【讨论】:

      【解决方案2】:

      在这里[A-Za-z0-9\\]一定是[A-Za-z0-9\\\\]

      【讨论】:

        【解决方案3】:

        在你的第一部分

        [A-Za-z0-9\\]
        

        应该改为

        [A-Za-z0-9\\\\]
        

        【讨论】:

          猜你喜欢
          • 2013-01-01
          • 2019-07-15
          • 1970-01-01
          • 2015-06-06
          • 2017-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-14
          相关资源
          最近更新 更多