2

文字列をチェックしてメールアドレスかどうかを確認するために使用している正規表現があります。

@"^((([\w]+\.[\w]+)+)|([\w]+))@(([\w]+\.)+)([A-Za-z]{1,3})$"

これは、「@」の前のビットが少なくとも4文字の長さであれば、テストしたすべての電子メールアドレスで正常に機能します。

作品:

web1@domain.co.uk

動作しません:

web@domain.co.uk

4文字未満のプレフィックスを許可するように正規表現を変更するにはどうすればよいですか?

4

6 に答える 6

3

電子メール検証のために asp.net mvc アカウント モデルで使用される「標準」正規表現は次のとおりです。

@"^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$"

@ の前に 1 つ以上の文字を使用できます

于 2013-02-12T13:42:11.467 に答える
2

有効なメールアドレスを確認する最善の方法は、ユーザーに2回入力させてからメールを送信し、検証リンクを使用して受信したという事実に異議を申し立てることです。

奇妙な有効な電子メールアドレスのリストで正規表現を再度確認すると、正規表現が電子メール検証タスクに最適ではないことがわかります。

于 2013-02-12T13:57:48.927 に答える
0

電子メールの検証に正規表現を使用しないことをお勧めします(ここに概説されている理由により)http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

確認メールを送信できない場合は、C#でMailAddressを作成して、失敗するかどうかを確認することをお勧めします。

ASP.NETを使用している場合は、CustomValidatorを使用してこの検証メソッドを呼び出すことができます。

    bool isValidEmail(string email)
    {
        try
        {
            MailAddress m = new MailAddress(email);
            return true;
        }
        catch
        {
            return false;
        }
    }
于 2013-02-15T18:59:26.500 に答える
0

検証済みの回答で使用される小さなトリック、つまり例外をキャッチする

new MailAddress(email);

「a@a」を有効なアドレスと見なすため、あまり満足のいくものではないようです。実際、正規表現「*.@.*」に一致するほとんどすべての文字列に対して例外が発生しません。これは、たとえば明らかに許容度が高すぎます

new MailAddress("¦#°§¬|¢@¢¬|") 

例外を発生させません。

したがって、私は明らかに正規表現マッチングに行きます

この例は非常に満足です

https://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.110%29.aspx

于 2015-07-13T13:02:05.243 に答える
0

代わりにこの正規表現を使用できます。

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

その説明はここにあります。

正規表現については、開始部分(([\w]+\.[\w]+)+)により、メールアドレスの先頭に 4 文字が強制されます。この部分を修正すると、作業が完了します。

于 2013-02-12T13:41:13.800 に答える
-1

これを試すこともできます

^[a-zA-Z0-9._-]*@[a-z0-9._-]{2,}\.[a-z]{2,4}$
于 2013-02-12T13:42:50.023 に答える