我从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的要求的条件,以便它回显'It pass'。谢谢!
第二次更新:
这是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 + ")";
答案 0 :(得分:2)
\\
[[:ascii:]]
而不是\\p{ASCII}
以下PHP正则表达式适合您:
$LEGAL_ASCII_REGEX = '/^[[:ascii:]]+$/';
$EMAIL_REGEX = '/^\s*?(.+)@(.+?)\s*$/';
$IP_DOMAIN_REGEX = '/^\[(.*)\]$/';
$USER_REGEX = '/^\s*' + preg_quote(WORD, '/') + '(\.' + preg_quote(WORD, '/') + ')*$/';