【问题标题】:Email validation Regex JAVA [closed]电子邮件验证正则表达式 JAVA [关闭]
【发布时间】:2017-07-05 02:29:23
【问题描述】:

我需要使用 Java 正则表达式进行电子邮件验证,这与我在 JSP 上已有的相同。当我将正则表达式从 JSP 复制到 JAVA 时,出现错误。但是,在 JSP 中它工作正常。

if (null != email) {
            String regex = "^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{1,6}))?$";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(email);
            if (!matcher.matches()) {
                addFormException(new DropletException("Email not valid "));
            }
        }

【问题讨论】:

    标签: java regex email


    【解决方案1】:

    在 Java 正则表达式中,您必须使用 2 个反斜杠来转义。即\\

    if (null != email) {
                String regex = "^([_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{1,6}))?$";
                Pattern pattern = Pattern.compile(regex);
                Matcher matcher = pattern.matcher(email);
                if (!matcher.matches()) {
                    addFormException(new DropletException("Email not valid "));
                }
            }

    【讨论】:

    • 成功了,谢谢
    【解决方案2】:

    我假设您的正则表达式有问题。请使用下面的正则表达式并尝试运行您的代码。你上面的代码只有一个斜线。

     String regex = "^([_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{1,6}))?$";
    

    【讨论】:

    • 这是正确的正则表达式。为什么给出-1
    • 我刚刚在 regex101 上运行了这个,并以 mark@yahoo.com 为例,使用你的正则表达式它返回不匹配。这可能是可能的原因。但是注释中的正则表达式也被标记为正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2014-05-11
    相关资源
    最近更新 更多