2

Zend_Validate_EmailAddress を使用して、電子メール プログラムの電子メール アドレスを検証します。RFC2822 に従って検証します - http://framework.zend.com/manual/en/zend.validate.set.html

私の質問は、検証に合格した場合、これらの電子メールは有効ですか?

test@test.co. test@test.co.za。etc 最後のピリオドに注意してください。

バリデーターがこれらのメールアドレスを渡していることがわかりましたが、これは明らかに間違っています。なぜこれが通過する必要があるのか​​ 完全に理解できません。誰か助けてもらえますか?

よろしく

4

2 に答える 2

4

電子メール アドレスは「明らかに間違っている」わけではありません。.DNS 名は、それが相対ではなく絶対であることを示すために、末尾を付けることを許可されています。

[編集して追加: 上記は誤解を招く可能性があります。電子メール アドレスでは、少なくとも SMTP の場合、ホスト名は常に完全修飾、つまり「絶対」として解釈されます。そのため、メール アドレスのホスト名部分に末尾を付ける必要はありません。.ただし、末尾.は依然として有効なホスト名構文です。]

于 2011-03-24T12:23:24.147 に答える
0

以下は、rfc2822 が推奨する正規表現です。

(?:[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])+)\])

この正規表現は時間がかかるため、Zend は意図せず末尾のピリオドを無視する単純な正規表現を使用したと思います。

役立つリンク:
http://www.regular-expressions.info/email.html
http://regexpal.com/

于 2011-03-24T12:30:22.957 に答える