方法 : Visual Basic で電子メール アドレスを解析する

更新 : 2007 年 11 月

電子メール アドレスを解析するための簡単な正規表現を次の例に示します。

使用例

この例で使用されている正規表現、(\S+)@([^\.\s]+)(?:\.([^\.\s]+))+ は次の意味を持ちます。

  1. 1 つ以上の (キャプチャされた) 空白ではない文字の後に、以下の順番で文字が続く

  2. "@" の文字

  3. 1 つ以上の空白でもピリオドでもない (キャプチャされた) 文字

  4. 以下の順で 1 つ以上の文字が続く

    1. "." の文字

    2. 1 つ以上の空白でもピリオドでもない (キャプチャされた) 文字。

正規表現の Match メソッドは、入力文字列のどの部分が正規表現と一致するかに関する情報が格納された Match オブジェクトを返します。

    ''' <summary>
    ''' Parses an e-mail address into its parts.
    ''' </summary>
    ''' <param name="emailString">E-mail address to parse.</param>
    ''' <remarks> For example, this method displays the following 
    ''' text when called with "someone@mail.contoso.com":
    ''' User name: someone
    ''' Address part: mail
    ''' Address part: contoso
    ''' Address part: com
    ''' </remarks>
    Sub ParseEmailAddress(ByVal emailString As String)
        Dim emailRegEx As New Regex("(\S+)@([^\.\s]+)(?:\.([^\.\s]+))+")
        Dim m As Match = emailRegEx.Match(emailString)
        If m.Success Then
            Dim output As String = ""
            output &= "User name: " & m.Groups(1).Value & vbCrLf
            For i As Integer = 2 To m.Groups.Count - 1
                Dim g As Group = m.Groups(i)
                For Each c As Capture In g.Captures
                    output &= "Address part: " & c.Value & vbCrLf
                Next
            Next
            MsgBox(output)
        Else
            MsgBox("The e-mail address cannot be parsed.")
        End If
    End Sub

この例では、Imports ステートメントを使用して System.Text.RegularExpressions 名前空間をインポートする必要があります。詳細については、「Imports ステートメント (.NET 名前空間および型)」を参照してください。

参照

処理手順

方法 : 文字列が有効な電子メール形式であるかどうかを検証する

その他の技術情報

Visual Basic における文字列の解析