【问题标题】:javascript regex to php regex UTF-8 chars email verification [duplicate]javascript正则表达式到php正则表达式UTF-8字符电子邮件验证[重复]
【发布时间】:2013-07-29 08:30:02
【问题描述】:

好的,所以我有这个大的正则表达式来检查 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 英寸处 一些.php

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

【问题讨论】:

标签: php javascript regex email email-verification


【解决方案1】:

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

(?:(?:\r\n)?[ \t])(?:(?:(?:[^()@,;:\".[] \000- \031]+(?:(?:(?:\r\n)?[ \t] )+|\Z|(?=[["()@,;:\".[]]))|"(?:[^\"\r\]|\.|(?:(? :\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\]|\.)\ ](?:(?:\r\n)?[ \t]))(?:.(?:(?:\r\n)?[ \t])(?: [^()@,;:\".[] \000-\031]+ (?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|[( [^[]\r\]|\.)](?: (?:\r\n)?[ \t])))|(?:[^()@,;:\".[] \000-\031]+( ?:(?:(?:\r\n)?[ \t])+|\Z |(?=[["()@,;:\".[]]))|"(?:[^\"\r\]|\.|(?:(?:\r\n )?[ \t]))"(?:(?:\r\n) ?[ \t]))*\(?:@(?:[^()@,; :\".[] \000-\031]+(?:(?:(?:\ r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\ .)](?:(?:\r\n)?[ \t]))(?:.(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[ ] \000-\031]+(?:(?:(?:\r\n) ?[ \t])+|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t] )))(?:,@(?:(?:\r\n)?[ \t])(?:[^()@,;:\ ".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)] (?:(?:\r\n)?[ \t]) )(?:.(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[] \000-\031]+ (?:(?:(?:\r\n)?[ \t] )+|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)](? :(?:\r\n)?[ \t])))) :(?:(?:\r\n)?[ \t]))?(?:[^()@,;:\".[] \000-\031 ]+(?:(?:(?:\r\n)?[ \t])+ |\Z|(?=[["()@,;:\".[]]))|"(?:[^\"\r\]|\.|(?:(?:\ 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-\031 ]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))| [([^[]\r\]|\.)]( ?:(?:\r\n)?[ \t]))(?:.(?:(?:\r\n)?[ \t])(?:[^ ()@,;:\".[] \000-\031]+(? :(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|[([^ []\r\]|\.)](?:(? :\r\n)?[ \t])))>(?:(?:\r\n)?[ \t]))|(?:[^ ()@,;:\".[] \000-\031]+(?:(? :(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|"(?:[^\ "\r\]|\.|(?:(?:\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-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]))|" (?:[^\"\r\]|\.|(?:(?:\r\n)?[ \t]))"(?:(?:\r\n)?[ \t])))@(?:(?:\r\n)?[ \t] )(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t]) +|\Z|(?=[["()@,;:\ ".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[\t]))(? :.(?:(?:\r\n)?[ \t])(? :[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(? =[["()@,;:\".[ ]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t]))) |(?:[^()@,;:\".[] \000- \031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[]]) )|"(?:[^\"\r\]|\.|( ?:(?:\r\n)?[ \t]))"(?:(?:\r\n)?[ \t]))*\(?:@(?:[^()@,; :\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@, ;:\".[]]))|[([ ^[]\r\]|\.)](?:(?:\r\n)?[ \t]))(?:.(?:(?:\r\ n)?[ \t])(?:[^()@,;:\" .[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\ ".[]]))|[([^[\ ]\r\]|\.)](?:(?:\r\n)?[ \t])))(?:,@(?:(?: \r\n)?[ \t])(?:[^()@,;:\".\ [] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\" .[]]))|[([^[]\ r\]|\.)](?:(?:\r\n)?[ \t]))(?:.(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[ ]]))|[([^[]\r\] |\.)](?:(?:\r\n)?[ \t]))))*:(?:(?:\r\n)? [ \t]))?(?:[^()@,;:\".[] \0 00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[["()@,;:\".[] ]))|"(?:[^\"\r\]|\ .|(?:(?:\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-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z| (?=[["()@,;:\". []]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t]))(?:. (?:(?:\r\n)?[ \t])(?:[ ^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[ ["()@,;:\".[] ]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t])))> (?:(?:\r\n)?[ \t]))(?:,\s( ?:(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\ Z|(?=[["()@,;:\ ".[]]))|"(?:[^\"\r\]|\.|(?:(?:\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-\031]+(?:(?:(?:\r\n)?[ \t ])+|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)]( ?:(?:\r\n)?[ \t]))(? :.(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[] \000-\031]+(? :(?:(?:\r\n)?[ \t])+| \Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)](?:(?: \r\n)?[ \t])))|(?: [^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?= [["()@,;:\".[\ ]]))|"(?:[^\"\r\]|\.|(?:(?:\r\n)?[ \t]))"(?:(?: \r\n)?[ \t]))\(?:@(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\ n)?[ \t])+|\Z|(?=[[" ()@,;:\".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[\ t]))(?:.(?:(?:\r\n) ?[ \t])(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)? [ \t])+|\Z|(?=[["() @,;:\".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[\t]) em>))(?:,@(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \ t])+|\Z|(?=[["()@, ;:\".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t]) )(?:.(?:(?:\r\n)?[ \t] )(?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+ |\Z|(?=[["()@,;:\ ".[]]))|[([^[]\r\]|\.)](?:(?:\r\n)?[ \t]))))*:(?:(?:\r\n)?[ \t]))? (?:[^()@,;:\".[] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z| (?=[["()@,;:\". []]))|"(?:[^\"\r\]|\.|(?:(?:\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 -\031]+(?:(?:(?:\r\n)?[ \t]) +|\Z|(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)](?: (?:\r\n)?[ \t]))(?:\ .(?:(?:\r\n)?[ \t])(?:[^()@,;:\".[] \000-\031]+(?: (?:(?:\r\n)?[ \t])+|\Z |(?=[["()@,;:\".[]]))|[([^[]\r\]|\.)](?:(?:\r \n)?[ \t])))>(?:( ?:\r\n)?[ \t]))))?;\s)

但是,如果你想保持清醒:

if (filter_var($input, FILTER_VALIDATE_EMAIL))
{
}

可能是一个更具可读性,而且通常更好的选择:)

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2015-07-04
    • 2014-05-11
    • 2011-10-27
    • 2017-03-06
    • 2014-12-09
    • 2015-12-20
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多