VB.NET email validation with Regex

14,118

Are the emails in UpperCase? If they aren't, they won't match.

If you want to modify the Regex so that it is Case insensitive, use this:

"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"
Share:
14,118
Admin
Author by

Admin

Updated on June 09, 2022

Comments

  • Admin
    Admin almost 2 years

    I've tried implementing a rather simple email validation function that seems return a false match even though the input is a valid email. I have searched for any issues with the existing regex but it seems to be correct.

    Even though the match returns a false value the program is stepping to the next validation level (which it shouldn't).

    Here is the email validation function.

    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
    

    And for the form validation that calls upon the email validation function.

    If (String.IsNullOrEmpty(EmailTextBox.Text) OrElse EmailAddressChecker(EmailTextBox.ToString)) Then
                MessageBox.Show("Please enter a valid email addresss")
                Return False
    End If
    

    The call for all of this happens on an click event which triggers a cascading serious of If statements checking to see if all the fields are set.

    Skipping a large chunk of code the click event asks if "AreFieldsSet <> True". Inside of the "AreFieldsSet" function contains all the validation for multiple inputs; one of which is the email validation if statement.

  • covertCoder
    covertCoder about 12 years
    I haven't tested this, but isn't this functionally equivalent to what the original code does? Less code, but both should do the same thing.
  • Admin
    Admin about 12 years
    I did notice however that the email address is equal to ""System.Windows.Forms.TextBox, Text: abc@aosdf". This obviously needs to be dealt with. I think I had a problem with this before.. Fix is something like "public override string ToString()" ????
  • covertCoder
    covertCoder about 12 years
    Accessing the textbox via txtMyTextbox.Text should return the email string in its purest form. Calling txtMyTextBox.ToString() should return the string you provided "System.Windows.Forms.TextBox, Text: abc@aosdf".