0

preg_match を使用して電子メール アドレスを検証しようとしています。

しかし、私はこのエラーが発生しています..

警告: preg_match(): 不明な修飾子 '+'

これは私のコードです

preg_match("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", $email, $matches);

誰かが私の正規表現の何が問題なのか教えてもらえますか?

ありがとう

4

1 に答える 1

2

を使用するときは、正規表現を区切り文字で囲む必要がありますpreg_match。標準は/です。式で区切り記号を使用する場合は、エスケープする必要があります。

preg_match("/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/", $email, $matches);

使用することも検討できます

filter_var($email, FILTER_VALIDATE_EMAIL);
于 2013-05-11T14:24:31.143 に答える