将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 楼答案
\\
[[:ascii:]]
而不是\\p{ASCII}
以下PHP正则表达式应该适合您: