2016-03-22 15 views
3

電子メールアドレスが有効かどうかを確認したい。電子メール形式VBでチェックインする

正規表現を使用してVBで電子メールアドレスを検証するにはどうすればよいですか?

([\w-+]+(?:\.[\w-+]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}) 
+0

可能な重複[検証します電子メールの正規表現VB.Net](http://stackoverflow.com/questions/369543/validating-e-mail-with-regular-expression-vb-net) – Jodrell

+0

あなたの質問を簡略化してはいけません、 VB.Netの正規表現にどのように一致させるのですか? " – Jodrell

答えて

1
Function validateEmail(emailAddress) As Boolean 

    Dim email As New Regex("([\w-+]+(?:\.[\w-+]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7})") 
    If email.IsMatch(emailAddress) Then 
     Return True 
    Else 
     Return False 
    End If 
+0

一度お試しになる前に質問をする理由は? –

+0

なぜ 'Return email.IsMatch(emailAddress)'だけではないのですか? – Jodrell

2

MSDNの記事:How to: Verify That Email are in Valid E-Mail Format

この例示的な方法は、文字列が正規表現パターンに準拠していることを確認するためにRegex.IsMatch(文字列、String)メソッドを呼び出します。

Function IsValidEmailFormat(ByVal s As String) As Boolean 
    Return Regex.IsMatch(s, "^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$") 
End Function 
0

これは私のElektroKitAPIから取られ、正規表現いじりせずに私のアプローチです:

enter image description here

''' ---------------------------------------------------------------------------------------------------- 
''' <summary> 
''' Validates a mail address. 
''' </summary> 
''' ---------------------------------------------------------------------------------------------------- 
''' <example> This is a code example. 
''' <code> 
''' Dim isValid As Boolean = ValidateMail("[email protected]") 
''' Dim isValid As Boolean = ValidateMail("mailto:[email protected]") 
''' </code> 
''' </example> 
''' ---------------------------------------------------------------------------------------------------- 
''' <param name="address"> 
''' The mail address. 
''' </param> 
''' ---------------------------------------------------------------------------------------------------- 
''' <returns> 
''' <see langword="True"/> if the mail address is valid, <see langword="False"/> otherwise. 
''' </returns> 
''' ---------------------------------------------------------------------------------------------------- 
<DebuggerStepThrough> 
Public Shared Function ValidateMail(ByVal address As String) As Boolean 

    If Not address.StartsWith("mailto:", StringComparison.OrdinalIgnoreCase) Then 
     address = address.Insert(0, "mailto:") 
    End If 

    If Not Uri.IsWellFormedUriString(address, UriKind.Absolute) Then 
     Return False 
    End If 

    Dim result As Uri = Nothing 
    If Uri.TryCreate(address, UriKind.Absolute, result) Then 
     Return (result.Scheme = Uri.UriSchemeMailto) 

    Else 
     Return False 

    End If 

End Function 

注:私は深いテストを実施していませんでした巨大な電子メールのリストを持っています。


あなたはWikipedia especificationsthis is my own、その後、正規表現をpreffer場合、それはしかし、この式はperfectllyに構築されていない、それがために回避していない、私の他の「ユニバーサル」の表現よりも良い結果をもたらしますたとえば、Wikipediaで指定されているダブルドットの競合ですが、そのような奇妙な命名例外は発生しません。

この表現は私に(モーメント)偽陽性を与えたことはないが、他の正規表現式expr、ご自身の責任でそれを使用するすべてのとおりの

enter image description here

''' ---------------------------------------------------------------------------------------------------- 
''' <summary> 
''' A pattern that matches an e-mail address. 
''' <para></para> 
''' 
''' For Example: 
''' <para></para> 
''' <c>[email protected]</c> 
''' 
''' </summary> 
''' ---------------------------------------------------------------------------------------------------- 
Public Const EMail As String = 
    "^(?<address>(?<local>[\d\w!#\$%\&'\*\+-/=\?\^_`\\\|~""\(\),:;\<\>@\[\]\{\}\.]+)@(?<domain>[\d\w-\.]+)\..+)$" 
関連する問題