2016-03-22 12 views
3

E-posta adresinin geçerli olup olmadığını kontrol etmek istiyorum.E-posta Formatı Denetimi VB'de

Bir e-posta adresi, Normal İfadeler kullanılarak VB'de nasıl doğrulanabilir?

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

Olası yinelenen [doğrulanıyor düzenli ifadeyle e-posta VB.Net] (http://stackoverflow.com/questions/369543/validating-e-mail-with-regular-expression-vb-net) – Jodrell

+0

Sorunuzu basitleştirmemelisiniz, " VB.Net'te düzenli bir ifadeyi nasıl eşleştirebilirim? " – Jodrell

cevap

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

Neden bir kez denemeden önce soru soruyorsunuz? –

+0

Neden sadece '' email.IsMatch (emailAddress) 'i değil – Jodrell

2

MSDN Madde: How to: Verify That Email are in Valid E-Mail Format

Bu örnek yöntem dizisi normal bir ifade modeline uygun olduğunu doğrulamak için Regex.IsMatch (String, String) yöntemini çağırır.

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 

Not:

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

Bu RegExile karışıklık olmadan benim yaklaşımdır, benim ElektroKitAPI alınan derin bir testi uygulandı vermedi büyük e-posta listeleri ile. Eğer Wikipedia especifications aşağıdaki ardından this is my own normal bir ifade, preffer Eğer


, bana diğer "evrensel" ifadeleri daha iyi sonuç verir, ancak bu ifade perfectlly inşa edilmez, için önlemek değil Örneğin, Wikipedia'da belirtilen çift nokta çakışması, ancak bunun gibi garip adlandırma istisnaları ile karşılaşmayacağını varsayalım.

Bu ifade bana (an be) yanlış Pozitif vermedim, ancak diğer Regex ifade, kendi sorumluluğunuzdadır bunu kullanan gibidir: ait

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-\.]+)\..+)$"