0

私は次の式を使用して電子メールアドレスを検証します(インターネットのどこかで見つけたので、完全に間違っていても非難しないでください:-)):

^((?:(?:(?:[a-zA-Z0-9 _] [.- +]?)*)[a-zA-Z0-9 _] [.- +]?)*)\ @( (?:(?:(?:[a-zA-Z0-9] [.-_]?){0,62})[a-zA-Z0-9])+)。([a-zA- Z0-9] {2,6})$

ほとんどの場合は正常に機能しますが、何らかの理由で電子メールアドレスのどこかにスペースを追加すると、IsMatchメソッドが非常に遅くなります。メールアドレスのスペースの位置によって計算時間が長くなるようです。次の無効な電子メールアドレスは、問題を示しています。

test @ aweb serversomewhereintheworld.com(遅い)

test @ awebserversomewhere intheworld.com(非常に遅い)

メールアドレスの検証に使用される正規表現の何が問題になっていますか?

4

1 に答える 1

1

スペースは電子メール アドレスでは有効ではないため、完全な検証を行う前にスペースを個別にチェックしてください。スペースが見つかった場合は、完全な (遅い) 検証を行わないでください。

また、電子メール アドレスに正規表現を使用することの何が問題なのかについての完全な議論については、次の質問を参照してください:正規表現を使用して電子メール アドレスを検証する

于 2012-05-10T10:45:42.253 に答える