有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将Java正则表达式转换为PHP正则表达式

我从ApacheCommons获得以下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\u to\u test必须符合$USER\u REGEX的要求,才能回显“it passed”。谢谢大家!

第二次更新:

以下是原始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 + ")";

共 (1) 个答案

  1. # 1 楼答案

    1. PHP正则表达式不需要像Java正则表达式那样的双\\
    2. PCRE regex有[[:ascii:]]而不是\\p{ASCII}
    3. 与Java正则表达式不同,PCRE正则表达式需要分隔符

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

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