2012-04-17 11 views
4

入力が有効な電子メールであっても、誤った一致を返すような、かなり単純な電子メール検証機能を実装しようとしました。私は既存の正規表現の問題を検索しましたが、正しいと思われます。RegexでVB.NET電子メールの検証

一致が偽の値を返すにもかかわらず、プログラムは次の妥当性検査レベルにステップしています。

ここに電子メール検証機能があります。

Function EmailAddressChecker(ByVal emailAddress As String) As Boolean 
     Dim regExPattern As String = "^[A-Z0-9._%+-][email protected][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 

すべてのフィールドが設定されているかどうかを確認するためにIfステートメントを深刻にカスケードするトリガとなるクリックイベントでこのすべてが呼び出されます。

clickイベントは、「AreFieldsSet <> True」かどうかを尋ねます。 「AreFieldsSet」関数の内部には、複数の入力に対するすべての検証が含まれています。そのうちの1つは電子メール検証のif文です。

+0

ために、このコードを試すことができます - 問題がどこにある可能性があります。 – antonpug

+0

また、電子メールアドレス検証用のtry catchでSystem.Net.Mail.MailAddressオブジェクトをインスタンス化することを検討することもできます。 – N0Alias

答えて

4

メールはUpperCaseにありますか?そうでない場合、一致しません。あなたはそれが大文字小文字を区別しませんになるように正規表現を変更したい場合は

、これを使用する:

"^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" 
0

あなたは正規表現オブジェクトのIsMatch関数を使用する必要がある電子メールアドレスを検証するには、それがエントリーかどうかを評価します電子メールアドレスは有効です。

Function EmailAddressChecker(ByVal emailAddress As String) As Boolean 
    Dim r As System.Text.RegularExpressions.Regex = Nothing 
    Dim regExPattern As String = "^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$" 

    If r.IsMatch(emailAddress ,regExPattern) Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 
+0

これはテストしていませんが、元のコードと機能的には同じではありませんか?コードは少なくなりますが、どちらも同じことを行う必要があります。 – covertCoder

+0

私は電子メールアドレスが "" System.Windows.Forms.TextBox、Text:abc @ aosdf "と等しいことに気付きました。これは明らかに対処する必要があります。 "public override string ToString()"のようなもの???? – Ealianis

+0

'txtMyTextbox.Text'でテキストボックスにアクセスすると、電子メールの文字列が最も純粋な形式で返されます。' txtMyTextBox.ToString() 'を呼び出すと、" System .Windows.Forms.TextBox、テキスト:abc @ aosdf " – covertCoder

0

あなたは私たちは、これがで呼び出されたコンテキストを参照する必要があなたのフォーム検証If (String.IsNullOrEmpty(EmailTextBox.Text) OrElse EmailAddressChecker(EmailTextBox.ToString)<>true) Then MessageBox.Show("Please enter a valid email addresss") Return False End If

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 
関連する問題