0

私は特定の問題で立ち往生しています。アルファベットの数字と . - と _ は許可され、常にアルファベットで開始する必要があります

ここに受け入れられるものの例があります

someone@mydomain.com
something1234@mydomain.com
someething.something@mydomain.com
something-something@mydomain.com
something_something@mydomain.com
something_1234@mydomain.com 
something.123@mydomain.com
something-456@mydomain.com

私が今までしてきたことは

[a-zA-Z0-9]+[._-]{1,1}[a-zA-Z0-9]+@mydomain.com

これは、一致しない問題を除いて、私のすべての要件に一致します

someone@mydomain.com
someont123@mydomain.com

しかし、それも一致します

someone_someone_something@mydomain.com 

これは必須ではありませんが、私が試したこの1つのことを解決する方法が本当にわかりません

[a-zA-Z0-9]+[._-]{0}[a-zA-Z0-9]+@mydomain.com

しかし、これも私の問題を解決していません。今では次のようなすべてを受け入れます

something+455@mydomain.com 

必須ではありません 助けてください

4

2 に答える 2

1

-orをオプションにしたい場合は、ここで(quantifier: once) を(quantifier: one or none).に置き換える必要があります。{1,1}?

 [a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+@mydomain.com

この正規表現が区切り文字のない短いアドレスにも一致する理由-._は、文字列全体をアサートするのではなく、その一部だけをアサートするためです。開始アンカー^と終了$アンカーを使用する:

 ^[a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+@mydomain\.com$
于 2012-06-10T12:14:31.657 に答える
1

これが私たちが持っている理由filter_var($email, FILTER_VALIDATE_EMAIL)です。

メールアドレスが有効な場合は、末尾が であるかどうかを確認するだけです@domain.com。それはで行うことができますstrrpos($email, '@domain.com')

于 2012-06-10T12:35:57.657 に答える