2012-04-17 6 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 

이 모든에 대한 호출 문은 모든 필드가 설정되어 있는지 확인하는 경우의 계단식 심각한을 트리거하는 클릭 이벤트에 발생합니다.

큰 이벤트 청크를 건너 뛰어 "AreFieldsSet <> True"인지 묻습니다. "AreFieldsSet"함수 내부에는 여러 입력에 대한 모든 유효성 검사가 포함됩니다. 그 중 하나는 이메일 검증 if 문입니다.

+0

이 코드를 시도 할 수 있습니다 - 문제가 어디 있는지 그 가능성이 높습니다. – antonpug

+0

전자 메일 주소 유효성 검사를 위해 try catch에서 System.Net.Mail.MailAddress 개체를 인스턴스화하는 것도 좋습니다. – N0Alias

답변

4

이메일은 대문자로되어 있습니까? 일치하지 않으면 일치하지 않습니다. 당신이 케이스를 구분되도록 정규식을 수정하려면

, 이것을 사용 :

"^[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, Text : 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 
관련 문제