0

OK、だから私は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 は some.php のオフセット 44 で \L、\l、\N{name}、\U、または \u をサポートしていません

したがって、問題は\u chars であるため、この正規表現を PHP に変換して、ブラウザーで JavaScript が無効になっている場合でもメールをチェックできるようにする方法です。\u00A0は、バックスラッシュをエスケープする必要があるどこかで見たいくつかの UTF-8 文字ですが、バックスラッシュをエスケープしてもエラーは同じなので、この正規表現の変換を手伝ってください

4

1 に答える 1

1

有効な電子メールを真に確実にチェックする PCRE 式が必要な場合、多かれ少なかれ機能することを私が知っている唯一の式です。ここで見つけました

(?:(?:\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]) )*\<(?:(?:\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]) *\<(?:(?:\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]) ) \<(?:(?:\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\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))
{
}

おそらくより読みやすく、一般的にはより良い賭けです:)

于 2013-07-29T08:38:24.170 に答える