使用正则表达式验证c#中逗号分隔的电子邮件

使用正则表达式验证c#中逗号分隔的电子邮件,c#,asp.net,regex,C#,Asp.net,Regex,我试图用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 将发回一封无效的电子邮件,并让用户知道重新键入它。我建议在执行正则表达式之前拆分字符串。您可以检查空字符串,看看它们是否有

我试图用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

将发回一封无效的电子邮件,并让用户知道重新键入它。

我建议在执行正则表达式之前拆分字符串。您可以检查空字符串,看看它们是否有两个逗号在那里背靠背

然后,您只剩下电子邮件地址regex的正常问题,如您所见:


有人问了无数次,但没有一个好的答案。

我建议在执行正则表达式之前先拆分字符串。您可以检查空字符串,看看它们是否有两个逗号在那里背靠背

然后,您只剩下电子邮件地址regex的正常问题,如您所见:


已经被问了无数次,但没有一个好的答案。

我使用的语言是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

我使用的语言是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

您可以在验证电子邮件之前拆分电子邮件以简化正则表达式。您可以在验证电子邮件之前拆分电子邮件以简化正则表达式。