【发布时间】: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 + ")";
【问题讨论】: