Regex Email - Игнорировать начальные и конечные пробелы? - PullRequest
9 голосов
/ 21 февраля 2009

Мы используем следующее для проверки электронной почты в ASP.NET:

.
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Как это можно изменить, чтобы игнорировать начальные и конечные пробелы?

Фактическое усечение, которое мы обрабатываем в коде при обратной передаче, но валидатор срабатывает как недействительный, если у пользователя часто остается дополнительный пробел из-за копирования и вставки.

Ответы [ 5 ]

14 голосов
/ 21 февраля 2009

Вы можете поместить \s* до и после вашего шаблона, и он должен работать правильно.

7 голосов
/ 21 февраля 2009

Сгруппируйте то, что вы хотите, в именованный захват, а затем разрешите пробелы до и после захвата

\s*(?<email>\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*)\s*
4 голосов
/ 21 февраля 2009

Просто выполните обрезку, прежде чем передать ее в валидатор.

1 голос
/ 17 июня 2013

В случае ASP.NET работает:

<asp:TextBox runat="server" ID="EmailAddress" />
<asp:RegularExpressionValidator ValidationExpression="\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*" runat="server" ControlToValidate="EmailAddress" Text="*" ErrorMessage="Email is not valid"  />

Позволяет различные электронные письма, такие как:

"some@one.com"
"  some@one.com  "
"so_me@one.co.uk"
" a.s-d__+f@asd.as.as "

и т.д.

Убедитесь, что вы удалили пробелы в вашем коде так:

VB Dim Email as string = EmailAddress.Text.Trim()

C # string Email = EmailAddress.Text.Trim();

0 голосов
/ 08 февраля 2017

Я собирался «ответить» на это как простой комментарий, но реальный ответ на ваш вопрос заключается в том, что нет ответа .

Почему?

Поскольку любой адрес электронной почты с пробелами или пробелами до или после него является недействительным адресом электронной почты.

Вы пытаетесь передать адрес электронной почты с пробелами вокруг него, например, в элемент управления SMPTP, и попытаетесь отправить его, он не удастся !

Все адреса электронной почты должны быть проверены с точки зрения этого регулярного выражения ...

\ ш + ([-. + '] \ W +) @ \ W + ([-.] \ W +). \ ш + ([-.] \ W +) *

или даже это

/. + @. + /

Все остальное является недействительным адресом электронной почты.

На самом деле, способ обойти TRIM () перед передачей в элемент управления электронной почтой для его использования.

Просто предупреждаю вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...