2016-03-22 4 views
3

Я хочу проверить, действителен ли адрес электронной почты.Формат электронной почты Проверка VB

Как можно проверить адрес электронной почты в VB с использованием регулярных выражений?

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

Возможный дубликат [Проверка e-mail с регулярным выражением VB.Net] (http://stackoverflow.com/questions/369543/validating-e-mail-with-regular-expression-vb-net) – Jodrell

+0

Не следует ли упрощать свой вопрос: как я могу сопоставить регулярное выражение в VB.Net? " – Jodrell

ответ

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

Почему вы задаете вопрос перед тем, как попробовать? –

+0

Почему бы не просто «вернуть email.IsMatch (emailAddress)» – Jodrell

2

MSDN Статья: How to: Verify That Email are in Valid E-Mail Format

В этом примере метод вызывает метод Regex.IsMatch (String, String), чтобы убедиться, что строка соответствует шаблону регулярного выражения.

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

Это мой подход, не баловаться с RegEx, взятый из моего ElektroKitAPI:

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 

Примечание: Я не выполнил глубокий тест с огромными списками писем.


Если вы preffer регулярного выражения, то this is my own следующего Wikipedia especifications, это дает мне лучшие результаты, чем другое «универсальное» выражения, однако, это выражение не perfectlly построено, он не избегает для например, конфликт между двумя точками, указанный в Wikipedia, но мы предполагаем, что не будут встречаться с такими странными исключениями имен.

Это выражение никогда не дал мне ложный положительный (на данный момент), но, как и любой другой Regex выраж, используйте его на свой страх и риск:

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-\.]+)\..+)$" 
Смежные вопросы