簡體   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