1

私はphpで電子メールの検証にこの正規表現を使用しています(こちらに基づいています)

^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;

私の質問は、区切り記号で区切られた電子メールのリストである入力をどのように検証できるかです。区切り文字が「、」または「;」であるとしましょう または "、" または ";"。

みたいなのを追加すればいいと思います

(\s*(;|,)\s*|\s*$)

しかし、うまくいきません...

4

3 に答える 3

3

電子メールの実際の検証は、短い正規表現よりもモジュールによって行う方が適切です。http://www.ex-parrot.com/pdw/Mail-RFC822-Address.htmlを参照してください

しかし幸いなことにphp、バリデーターがあります:

<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_a) email address is considered valid.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_b) email address is considered valid.";
}
?>

http://php.net/manual/en/filter.examples.validation.phpを参照してください

于 2013-01-14T21:26:51.337 に答える
1

メールの検証に正規表現を使用しないでください。PHPにはこのfilter_var()の関数があります。

$email = 'joe@example.com';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  //valid
}else{
  //not
}

このコードを適応させ、explode('、'、$ email)を使用して複数の電子メールを検証できます。

于 2013-01-14T21:27:45.097 に答える
0

純粋な正規表現ソリューションのみを受け入れている場合は使用できない答えを与えるリスクがありますが、いくつかの理由から、区切り文字でexplodeを使用、配列を反復処理して各電子メールを順番に検証することをお勧めします。

  1. 正規表現とそれを処理するコードが簡略化されます。

  2. 正規表現は、電子メールの一般的なユースケースのみを処理する必要があり、電子メールアドレスを検証する必要があるときはいつでも一般的な再利用可能な操作にすることができます。また、正規表現操作を、電子メール検証用のライブラリまたはその他のカスタムバリデーターの呼び出しと交換するのも簡単です。

  3. 検証に失敗した電子メールを出力に示したり、検証したすべてのアドレスを受け入れて検証しなかったアドレスを破棄したりするなど、関連する可能性のある必需品の処理が簡単になります。

于 2013-01-14T21:26:43.947 に答える