繁体   English   中英

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

[英]Validating comma separated emails in c# with 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

会发回无效的电子邮件,并让用户知道重新输入。

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

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

https://stackoverflow.com/search?q=电子邮件+地址+验证

被询问了数十亿次,实际上没有一个很好的答案。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM