我正在尝试在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
会发回无效的电子邮件,让用户知道要重新输入。
答案 0 :(得分:1)
我建议在执行正则表达式之前拆分字符串。你可以检查空字符串,看看它们背后是否有两个逗号。
然后你只剩下电子邮件地址regex的正常问题了,正如你所看到的那样:
https://stackoverflow.com/search?q=Email+address+validation
被问到了几百万次,并没有一个好的答案。
答案 1 :(得分: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