我尝试实现一个相当简单的电子邮件验证功能,即使输入是有效的电子邮件,它似乎也会返回错误匹配。我已经搜索了现有正则表达式的任何问题,但似乎是正确的。
即使匹配返回false值,程序也会步入下一个验证级别(不应该)。
这是电子邮件验证功能。
Function EmailAddressChecker(ByVal emailAddress As String) As Boolean
Dim regExPattern As String = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$"
Dim emailAddressMatch As Match = Regex.Match(emailAddress, regExPattern)
If emailAddressMatch.Success Then
Return True
Else
Return False
End If
End Function
用于调用电子邮件验证功能的表单验证。
If (String.IsNullOrEmpty(EmailTextBox.Text) OrElse EmailAddressChecker(EmailTextBox.ToString)) Then
MessageBox.Show("Please enter a valid email addresss")
Return False
End If
所有这一切的调用都发生在一个click事件上,该事件触发了一系列严重的If语句,检查是否设置了所有字段。
跳过大量代码,click事件会询问“AreFieldsSet<> True”。 “AreFieldsSet”函数内部包含多个输入的所有验证;其中一个是电子邮件验证if语句。
答案 0 :(得分:4)
是否在UpperCase中发送电子邮件?如果不是,他们将无法匹敌。
如果要修改Regex以使其不区分大小写,请使用:
"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"
答案 1 :(得分:0)
要验证您需要使用Regex对象的IsMatch功能的电子邮件地址,它会评估条目电子邮件地址是否有效。
Function EmailAddressChecker(ByVal emailAddress As String) As Boolean
Dim r As System.Text.RegularExpressions.Regex = Nothing
Dim regExPattern As String = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$"
If r.IsMatch(emailAddress ,regExPattern ) Then
Return True
Else
Return False
End If
End Function
答案 2 :(得分:0)
您可以尝试使用此代码进行表单验证If (String.IsNullOrEmpty(EmailTextBox.Text) OrElse EmailAddressChecker(EmailTextBox.ToString)<>true) Then
MessageBox.Show("Please enter a valid email addresss")
Return False
End If
答案 3 :(得分:0)
Public Shared Function ValidEmailAddress(ByVal emailAddress As String, ByRef errorMessage As String) As Boolean
If emailAddress.IndexOf("@") > -1 Then
If (emailAddress.IndexOf(".", emailAddress.IndexOf("@")) > emailAddress.IndexOf("@")) AndAlso emailAddress.Split(".").Length > 0 AndAlso emailAddress.Split(".")(1) <> "" Then
errorMessage = ""
Return True
End If
End If
Return False
End Function