2017-02-07 5 views
0

私はこの単純な電子メールの正規表現を持っています。
電子メールの検証が機能しない

/^[a-z]+([\.-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$/i; 

しかし、私はこの例を使用する場合:@最初の最後の@ example.comそれはまだ動作しています、そして、また、私は式から@文字を削除する場合:

`/^[a-z]+([\.-_]?[a-z0-9]+)*([a-z]{3,})+(\.[a-z]{2,3})+$/i 

が、それは同じを与えます結果。

この式では、記号(つまり、@)の無限数を電子メールに2文字以上入力できます。

この表現にはどのような問題がありますか?

+4

'[。-_]'は多くの文字に一致します。 '@'代わりに '[._-]'が必要です。 –

+1

この件に関する良い情報:http://www.regular-expressions.info/email.html –

+1

パターンはかなり奇妙です。なぜあなたは '([a-z] {3、})+'を使うのですか? '[a-z] +'で十分であるようです。それは 'input'ですか? 'type =" email "'を使用 –

答えて

3

あなたのパターンはかなり限定的です。入力フィールドの検証であれば、type="email"のような電子メールアドレスを検証する他のオプションが考えられます。正規表現は、あなたがそれを取る場合でも、@と一致する、またはハイフンが@が含ま範囲を作成して文字をたくさん一致する[.-_]で同棲れる2つの@のシンボル、との文字列にマッチする理由として

。代わりに[._-]を使用する必要があります。

enter image description here

あなたはしかし、この正規表現は、実際の生活のシナリオで使用するのに良いではありません

/^[a-z]+([._-]?[a-z0-9]+)*[a-z]{3,}(\.[a-z]{2,3})+$/i 

として正規表現を「修正」があります。

0

あなたはそんなことをしたいですか?

\.-_あなたはどちらか持っていると思った記号とおそらく
/^[a-z\.\-_][email protected]([a-z]{3,})+(\.[a-z]{2,3})+$/ 

、または「」 『 - 』または 『_』正規表現の内部で使用されるが、あなたは 『マイナス』をエスケープするのを忘れました。

それとも、あなた自身が、とエスケープを使用することができます。

^[a-z]+([\.\-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$ 

PSは:本物の有効なEメールアドレスが完全に異なる可能性があることを忘れないでください、巨大な正規表現を持ち、しかも、各Webサーバが許可されているものを定義メールには何が入っていないのですか?

関連する問題