preg_match("/^[-\w.][email protected]([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email);
私は、このようなとして電子メールを許可するには、この正規表現を変更したい電子メールを検証する正規表現を変更しますか?
私はこれをどのように行うことができますか?
preg_match("/^[-\w.][email protected]([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email);
私は、このようなとして電子メールを許可するには、この正規表現を変更したい電子メールを検証する正規表現を変更しますか?
私はこれをどのように行うことができますか?
だけ[-\w.]
一部で+
を追加:フィルタの拡張子が適切に電子メールアドレスを検証することができ、電子メールのバリデータを持っていることを
preg_match("/^[-\w.+][email protected]([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email);
注:
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
// invalid
}
をfilter_var
[doc]とFILTER_VALIDATE_EMAIL
[doc]フィルタを参照してください。 FYIここ
はthe regex used by FILTER_VALIDATE_EMAILです:
/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})
(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?
:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22
(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-
\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3
F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5
D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[
a-z0-9]+(?:-[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]
+))(?:-[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(
?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f
0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]
{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?:
:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?
:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(
?:[1-9]?[0-9]))){3}))\\]))$/iD
最初の文字セットに+
を追加します。
preg_match("/^[-\w.+][email protected]([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email);
を、直前の答えとの懸念を指摘する: '' '+' と電子メールアドレスのユーザー名部分の最初の文字にすることはできません。
preg_match('/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/', $email);
しかし、これはほとんどのアプリケーションのために非常に実用的ではありません。正しい正規表現は、完全なRFC 2822に対して検証するために、あなたはこのような何かをする必要がありますことを
preg_match("/^\w[-\w.+]*@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email);
注意する必要があります。電子メールアドレスの正規表現検証の詳細については、this pageをご覧ください。
'。'最初のセットでは、文字クラスのセレクタ[]内にある文字と一致しないので、一致するのはリテラルにのみ一致します。 –
D'oh!良いキャッチ、ありがとう。私は私の答えを更新しました。 –
必須のリンク:[Mail :: RFC822 ::アドレス:regexpベースのアドレス検証](http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html) – sehe
正規表現は使用しないでください電子メールを検証します。 [あなたは失敗する](http://www.codinghorror.com/blog/2005/02/regex-use-vs-regex-abuse.html)。 –
(現実世界の多くのアドレスがRFC822を満たしていないことにも注意してください) –