VB.NET email validation with Regex
我尝试过实现一个相当简单的电子邮件验证函数,它似乎返回一个错误的匹配,即使输入是有效的电子邮件。我搜索过现有regex的任何问题,但似乎是正确的。
即使匹配返回一个错误的值,程序也会进入下一个验证级别(不应该这样)。
这是电子邮件验证功能。
1 2 3 4 5 6 7 8 9 | 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 |
以及用于调用电子邮件验证功能的表单验证。
1 2 3 4 | 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语句。
电子邮件是大写的吗?如果不是,他们就不会匹配。
如果要修改regex使其不区分大小写,请使用以下命令:
1 | "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" |
1 2 3 4 5 6 7 8 9 10 | 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 |
您可以尝试使用此代码进行表单验证
MessageBox.Show("Please enter a valid email addresss")
Return False
End If
要验证需要使用regex对象的ismatch函数的电子邮件地址,它将评估输入的电子邮件地址是否有效。
1 2 3 4 5 6 7 8 9 10 | 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 |
号