ASP.Net - 使用正则表达式验证电子邮件地址?
问题描述:
使用正则表达式验证组件验证电子邮件地址时,必须添加额外的RequiredFieldValidator以确保存在值。ASP.Net - 使用正则表达式验证电子邮件地址?
我主要采用CustomFieldValidator处理此问题,并使用Javascript处理此问题。
有没有更好的方法来做到这一点?
答
为什么不使用RegularExpressionValidator
和RequiredFieldValidator
?
如果您使用CustomFieldValidator
,则需要执行javascript检查和服务器端检查。一起使用其他两个验证控件不需要额外的实现,除非设置了一些属性,并且这是使用WebForms进行此类验证的预期方式。
考虑下一位将会出现的程序员,看看您的不同设置,并想知道为什么您在所有这些额外的工作中都不需要时才去做。
答
如果你喜欢做的,你可以使用下面的功能,后台代码:
Function checkEMail(ByVal email As String) As Boolean
Dim pattern As String = "^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|""((?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*""\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|""((?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*"")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$"
Dim emailCheck As Match = Regex.Match(email, pattern)
If emailCheck.Success Then
checkEMail = True
Else
checkEMail = False
End If
Return checkEMail
End Function