1

C# でコンマ区切りの電子メールの文字列を検証しようとしています

これまでのところ、これは機能しています:

^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4}[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4})[\W]*$

ただし、メールが複数のコンマで区切られている場合、メールを許可しないようにする必要があります。例えば:

test@test.com,,test@test.com

無効な電子メールを送り返し、ユーザーに再入力するように知らせます。

4

2 に答える 2

1

正規表現を実行する前に、文字列を分割することをお勧めします。空の文字列をチェックして、連続する 2 つのコンマがあるかどうかを確認できます。

次に、メールアドレスの正規表現の通常の問題が残ります。これは、ご覧のとおり、次のとおりです。

https://stackoverflow.com/search?q=Eメール+アドレス+検証

何十億回も質問されてきましたが、本当に良い答えは 1 つではありません。

于 2012-06-20T17:24:35.363 に答える
0

私が使用した言語は VB.NET ですが、メソッドは同じままです。

Imports System.Net.Mail

Module Module1

    Friend Function IsValidEmailAddress(a As String) As Boolean
        Dim isValid As Boolean = False
        Try
            Dim e = New MailAddress(a)
            isValid = True
        Catch ex As FormatException
            isValid = False
        End Try

        Return isValid

    End Function

    Sub Main()
        Dim addressesToCheck = "test@test.com,,test@test.com,notanemailaddress"
        Dim addresses = addressesToCheck.Split(",".ToCharArray, StringSplitOptions.RemoveEmptyEntries)
        For Each a In addresses
            Console.WriteLine(String.Format("{0} valid: {1}", a, IsValidEmailAddress(a)))
        Next

        Console.ReadLine()

    End Sub

End Module

出力:

test@test.com valid: True
test@test.com valid: True
notanemailaddress valid: False
于 2012-06-20T17:48:28.910 に答える