【问题标题】:Validating comma separated emails in c# with regex使用正则表达式在 C# 中验证逗号分隔的电子邮件
【发布时间】:2012-06-21 01:48:28
【问题描述】:

我正在尝试在 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# asp.net regex


【解决方案1】:

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

那么你只剩下电子邮件地址正则表达式的正常问题了,如你所见:

https://stackoverflow.com/search?q=Email+address+validation

已经被问了几十亿次,但实际上没有一个好的答案。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      相关资源
      最近更新 更多