2011-02-03 9 views
1

私はwww.regular-expressions.infoから、次の正規表現 を使用していた電子メールアドレスを検証するために:トラブル「@」

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

上記の正規表現を使用した問題は、私はsuccefullyことができるということです二重にした電子メールアドレスも検証「@」これらのように:私はをしたくない

[email protected]@gmail.com # Note the double '@' 
[email protected]@com.com 

... を。だから、どうすれば調整できますか?


UPDATE

私は正規表現がこれらのようなメールアドレスを拒否していないにも発見:

[email protected] 
[email protected]@gmail 
+0

あなたは何を意味するのですか? – user502052

答えて

0

あなたは.NETを使用している "かもしれない" と仮定すると、ここでの正規表現私はです電子メールアドレスの検証に使用します。

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$ 
+0

私はその正規表現を保持したいと思います。 – user502052

3

現在の正規表現は、有効な電子メールが含まれている文字列と一致します。入力文字列[email protected][email protected]に有効なメールアドレス[email protected]があります。

あなたは正規表現が完全文字列と、それのない適切なサブと一致するように正規表現にスタートアンカー(^)と終了アンカー($)を追加する必要があります。

試してみてください。

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

それは私のフォームを動作しません。 – user502052

+0

理由を説明できますか?それは私のためにうまく動作します。 – Ashe

+0

これは、Ruby on Railsフレームワークを使用してデータベースレコードからその正規表現文字列を取得したためです...この構文を使用して値を取得します:Regexp.new(Parameter.find_by_param_name( 'email_regex')。param_value) – user502052