vb.net - 正则表达式网址 - 线上正则匹配




用正则表达式VB.Net验证电子邮件 (4)

我正在VB.Net的一个小项目中从一个文本框中得到一个输入,并且需要验证这是一个电子邮件地址。

我发现这个表达式“^ [_ a-z0-9 - ] +(。[_ a-z0-9 - ] +) @ [a-z0-9 - ] +(。[a-z0-9 - ] +) ( 。[az] {2,4})$“,但我无法找到任何方式来测试它是否通过。

我想要一些代码,如:

if not txtEmail.text = regexString then
    something happens..
else
    something else happens..
end if

有这样一个伟大的网站, http://regexlib.com/ 。 它不仅有一个测试应用程序,您可以在其中粘贴正则表达式并对其进行测试,而且还有一个正则表达式库,可用于社区对其有效性的反馈等。我不是正则表达式大师,所以当我需要一个快速的正则表达式时,我会去这里。

此外,如果您正在考虑自己开发正则表达式,那么可以使用一个名为Regex Buddy的优秀工具,它允许您使用易于理解的正则表达式的英语解释来创建和测试正则表达式。


电子邮件地址:RFC 2822(简体)匹配一个正常的电子邮件地址。 不检查顶级域名。 要求“不区分大小写”选项为ON。

Dim FoundMatch As Boolean
Try
    FoundMatch = Regex.IsMatch(txtEmail.text, "\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase)
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try

If Not FoundMatch Then
   Error = True
Else
   Error = False
End If

我的文章中使用正则表达式匹配电子邮件地址选择您最喜欢的正则表达式 ,并将其插入到这个Visual Basic代码:

If Regex.IsMatch(SubjectString, "regex") Then
    Error = False
Else
    Error = True
End If

匹配一个电子邮件地址的最好的正则表达式是一个有争议的话题,我不想在这里进入。 我的文章讨论了选择正则表达式时应该注意的问题。 Joel Coehoorn的回答中的正则表达式绝对不是一个好的方法。


由于它不是一个正则表达式的解决方案,可能是无关紧要的,但是您可以使用.NET 2.0的一些内置功能:

try
{
   MailAddress email = new MailAddress(txtEmail.Text);
}
catch(FormatException fe)
{
   // output error
}




email