Проверка электронной почты с регулярным выражением VB.Net

Измените это User loggedUser = authenticationFacade.getAuthentication(); на TokenBasedUserDetails loggedUser = (TokenBasedUserDetails )authenticationFacade.getAuthentication();, затем используйте методы loggedUser для получения информации о текущем зарегистрированном пользователе.

11
задан AndersE 21 February 2009 в 13:26
поделиться

6 ответов

Используйте System.Text.RegularExpressions.Regex класс:

Function IsEmail(Byval email as string) as boolean
    Static emailExpression As New Regex("^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$")

    return emailExpression.IsMatch(email)
End Function

Самая важная вещь понять об этом ответе состоит в том, что я не записал регулярное выражение сам. Существует именно так много неправильных путей, которые, кажется, являются правильными, и существует несколько уровней детализации, к которым Вы могли взять это. Например, Вы хотите ограничить это допустимыми высокоуровневыми доменами, и если так, как Вы объясняете то, что они теперь иногда добавляют новый TLDs? Если регулярное выражение самое соответствующее место для того теста, или должен иметь отдельный код для той проверки? Даже выражение в этом ответе является теперь очень устаревшим, так как это было первоначально создано.

Я рекомендую найти внешний ресурс для выражения, которое Вы знаете, будет сохраняться со временем.

22
ответ дан 3 December 2019 в 01:39
поделиться

Выберите свой любимый regex от моей статьи о соответствии адресам электронной почты с regex и включите его в этот код Visual Basic:

If Regex.IsMatch(SubjectString, "regex") Then
    Error = False
Else
    Error = True
End If

Лучший regex для соответствия адресу электронной почты является спорной темой, в которую я не хочу входить здесь. Моя статья обсуждает вопросы, о которых необходимо знать при выборе regex. regex в ответе Joel Coehoorn является определенно не хорошим.

6
ответ дан 3 December 2019 в 01:39
поделиться

Существует большой веб-сайт для такого рода вещи, http://regexlib.com/. Мало того, что это имеет приложение тестера, где можно вставить в регулярном выражении и протестировать его, но существует также библиотека регулярных выражений, которые можно использовать с общественной обратной связью на их законности и т.д. Я не regex гуру, таким образом, я иду сюда, когда мне нужно быстрое регулярное выражение.

Кроме того, при размышлении о разработке регулярных выражений сами существует превосходный инструмент по имени Regex Buddy, который позволит Вам создавать и тестировать свои регулярные выражения на лету с помощью легкого для понимания английской интерпретации regex.

5
ответ дан 3 December 2019 в 01:39
поделиться

Возможно вне темы, так как это не regex решение, но Вы могли просто использовать некоторые созданные в функциях.NET 2.0:

try
{
   MailAddress email = new MailAddress(txtEmail.Text);
}
catch(FormatException fe)
{
   // output error
}
5
ответ дан 3 December 2019 в 01:39
поделиться

Адрес электронной почты: RFC 2822 (упростил) Соответствия нормальный адрес электронной почты. Не проверяет домен верхнего уровня. Требует "нечувствительной к регистру" опции идти.

Dim FoundMatch As Boolean
Try
    FoundMatch = Regex.IsMatch(txtEmail.text, "\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase)
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try

If Not FoundMatch Then
   Error = True
Else
   Error = False
End If
-2
ответ дан 3 December 2019 в 01:39
поделиться

Это regex не действительно завершено... действительно... большинство не (проверьте эту статью или этого).

Если Вы действительно не наслаждаетесь болью, regex не является правильным способом проверить адрес электронной почты.

2
ответ дан 3 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: