javascript正则表达式到php正则表达式UTF-8字符电子邮件验证

javascript正则表达式到php正则表达式UTF-8字符电子邮件验证,php,javascript,regex,email,email-verification,Php,Javascript,Regex,Email,Email Verification,好的,我有一个大的正则表达式来检查javascript中的电子邮件: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0

好的,我有一个大的正则表达式来检查javascript中的电子邮件:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i
我想在php中与preg_match一起使用它

但我得到了这个错误:

编译失败:PCRE不支持\L、\L、\N{name}、\U或\U 偏移量为44英寸 some.php


所以问题是\u字符,所以如何将这个正则表达式转换为PHP,这样即使浏览器禁用了javascript,我也可以检查电子邮件。因此,\u00A0是我在某处看到的一些UTF-8字符,我必须避开反斜杠,但即使所有的反斜杠都被避开,错误仍然是一样的,所以请帮助我转换这个regex

如果你想要一个真正可靠地检查有效电子邮件的PCRE表达式,这是我所知道的唯一有效的表达式,多多少少:

(?:(?:\r\n)?[\t])(?:(?:[^()@;:\”[]\000-\031]+(?:(?:\r\n)?[\t] )+|\Z |(?=[“()@,;:\”[]]))124;“(?:[^\”\r\]\124;\。(?:(?:\ r\n)?[\t])”(?:(?:) \r\n)?[\t])(?:(?:(?:\r\n)?[\t])(?:[^()@;:\”[]\000-\031]+(?:(?:)( ?:\r\n)?[\t])+\Z(?=[[“()@,;:\”[]])))。(?:[^\“\r\].\。。(?:(?:\r\n)?[ \t] )“(?:(?:(?:\r\n)?[\t]))@((?:\r\n)?[\t])(?:[^(),;:\”[]\000-\0 31]+(?:(?:\r\n)?[\t])+\Z;(?=[[“()@,;:\”[]]))。[([([^[]\r\]\124;\)\ ](?:(?:\r\n)?[\t])(?:(?:(?:\r\n)?[\t])(?:[^()@;:\”[]\000-\031]+ (?:(?:(?:\r\n)?[\t])+\Z;(?=[[“()@,;:\”[]))。[([^[]\r\]\124\)](?: (?:\r\n)?[\t]))|(?:[^()@,;:\“[]\000-\031]+(?:(?::\r\n)?[\t])+\Z |(?=[“()@,;:\”[]])|“(?:[^\”\r\]\124;\。(?:(?:\ r\n)?[\t])”(?:(?::\r\n) (?:[\t]))*\(?:(?:\r\n)?[\t]))|(?:[^()@;:\”[]\000-\031]+(?:(?)? :(?:\r\n)?[\t])+\Z |(?=[“()@,;:\”[]])))124;“(?:[^\“\r\].\124;)(?:(?::\ r\n)? [\t])“(?:(?:\r\n)?[\t])*:(?:(?:\r\n)?[\t])(?:(?:(?:[^()@;:\”[] \000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[[“()@,;:\”[])))。“(?:[^\”\r\]| \(?:(?:\r\n)?[\t])(?:(?:\r\n)?[\t])(?:(?:(?:\r\n)?[\t])(?:(?:(?:\r\n)?[\t])(?:[^() @,;:\“[]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[“()@,;:\”[]))。” (?:[^\'\r\]\.[\t])(?:(?:(?:\r\n)?[\t]))@((?:(?:\r\n)?[\t])(?:(?:\r\n)?[\t] )(?:[^()@,;:\”[]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[[“()@,;):\ “[]])|[([^[]\r\]\124\])](?:(?:\ r\n)?[\t])(?:(?:(?:\r\n)?[\t]))(?:(?:(?:\r\n)?[\t])? :[^()@,;:\“[]\000-\031]+(?:(?:\r\n)?[\t])+\124;\ Z;(?=[“()@,;:\”[ ]]))|[([^[]\r\]\124\]](?:(?:\ r\n)?[\t])))\124;(?:[^()@;:\”[]\ 000- \031]+(?:(?:\r\n)?[\t])+\Z;(?=[[“()@,;:\”[]]))。“(?:[^\“\r\]\”|( (?:(?:\r\n)?[\t])“(?:(?:\r\n)?[\t])*\(?:(?:\r\n)?[\t]))(?:,\s( ?:(?:[^()@,;:\”[]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[[”()@,;:\ “[]])|”(?:[^\“\r\].\124\。(?:(?:\ r\n)?[\t])(?:(?:(?:\r\n)?[\t]))(?:(?:)( ?:\r\n)?[\t](?:[^()@,;:\”[]\000-\031]+(?:(?:(?:\r\n)?[\t])+?:\Z(=[ [“()@,;:\”[]])|“(?:[^\”\r\]\124\.\ 124;(?:(?:\ r\n)?[\t])”(?:(?:\r\n)?[\t ])))@(?:(?:\r\n)?[\t])(?:[^()@;:\“[]\000-\031]+(?:(?:\r\n)?[\t ])+|\Z |(?=[[“()@,;:\”[]]))|[([^[]\r\]\r\].[\t])(?:(?:\r\n)?[\t])(?)? (?:(?:\r\n)?[\t])(?:[^()@;:\”[]\000-\031]+(?:(?:(?:\r\n)?[\t])+| \Z |(?=[[“()@,;:\”[]]))|[([^[]\r\]\r\]\]。](?:(?:\r\n)?[\t]))|(?: [^()@,;:\”[]\000-\031]+(?:(?:\r\n)?[\t])+\Z;(?=[[“()@,;:\”[\ ]]))|“(?:[^\”\r\]\.(?:(?:\r\n)?[\t])”(?:(?:(?:\r\n)?[\t])\(?::( ?:\r\n)?[\t])?;\s)

然而,如果你想保持理智:

if (filter_var($input, FILTER_VALIDATE_EMAIL))
{
}
这可能是一个更具可读性且通常更好的选择:)

请使用如此复杂的正则表达式。只需使用