【问题标题】:Convert Java Regex into PHP regex将 Java 正则表达式转换为 PHP 正则表达式
【发布时间】:2014-07-10 14:26:21
【问题描述】:

我从 Apache commons 获得了以下 Java 代码来验证电子邮件地址。我用 PHP 编码,所以我想看看这些正则表达式是否可以直接在 PHP 中使用而无需任何修改。

LEGAL_ASCII_REGEX = "^\\p{ASCII}+$";
EMAIL_REGEX = "^\\s*?(.+)@(.+?)\\s*$";
IP_DOMAIN_REGEX = "^\\[(.*)\\]$";
USER_REGEX = "^\\s*" + WORD + "(\\." + WORD + ")*$";

如果电子邮件地址不符合上述 4 个条件中的任何一个,则该电子邮件地址将被视为无效。

我对 Java 没有任何经验,因此非常感谢有关修改 PHP 所需的这些正则表达式的任何建议!

最好的,

更新:

我使用的代码是:

        $email_to_test='www.jinfu66@foxmail.com';

        if(filter_var($email_to_test, FILTER_VALIDATE_EMAIL)&&preg_match('/^[[:ascii:]]+$/', $email_to_test)&&preg_match('/^\s*?(.+)@(.+?)\s*$/', $email_to_test))
        {
            echo 'It passed';
        }

        else
        {
            echo 'It did not t passs';
        }

我不知道如何添加条件 $email_to_test 必须匹配 $USER_REGEX 的要求才能回显“它通过了”。谢谢!

第二次更新:

这是 WORD 在原始 JAVA 正则表达式中的含义:

private static final String SPECIAL_CHARS = "\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]";
private static final String VALID_CHARS = "[^\\s" + SPECIAL_CHARS + "]";
private static final String QUOTED_USER = "(\"[^\"]*\")";
private static final String WORD = "((" + VALID_CHARS + "|')+|" + QUOTED_USER + ")";

【问题讨论】:

    标签: java php regex email


    【解决方案1】:
    1. PHP 正则表达式不需要像 Java 正则表达式那样的双 \\
    2. PCRE 正则表达式有[[:ascii:]] 而不是\\p{ASCII}
    3. PCRE 正则表达式不同于 Java 正则表达式需要分隔符

    以下 PHP 正则表达式应该适合你:

    $LEGAL_ASCII_REGEX = '/^[[:ascii:]]+$/';
    $EMAIL_REGEX = '/^\s*?(.+)@(.+?)\s*$/';
    $IP_DOMAIN_REGEX = '/^\[(.*)\]$/';
    $USER_REGEX = '/^\s*' + preg_quote(WORD, '/') + '(\.' + preg_quote(WORD, '/') + ')*$/';
    

    【讨论】:

    • 嗯,你转换了 4 个正则表达式,但没有爱...? +1 :)
    • 谢谢@zx81....我想既然问题得到了这么多反对票,这就是它失去知名度的原因。
    • 不客气。现在知道为什么你得到这么多反对票了,我已经取消了一个。
    • @anubhava 我能够毫无问题地实现 $Legal_ASCII_Regex 和 $EMAIL_REGEX。但是,我不确定如何实现 $USER_REGEX 因为它是 4 个正则表达式组合在一起。我使用的论坛是 preg_match('The regex to use', $the_value_to_test)。非常感谢!
    • 我可以看看你的代码。通过编辑问题发布您的代码或在 ideone.com 上创建可执行代码示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多