Почтовая проверка регулярного выражения

Кто-либо может исправить выражение ниже к также не, позволяют пустое поле?

<asp:RegularExpressionValidator ID="expEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="valid email address required" ValidationExpression="^([a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){1,70}$"></asp:RegularExpressionValidator>
8
задан abatishchev 22 February 2012 в 13:20
поделиться

6 ответов

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

11
ответ дан 5 December 2019 в 05:25
поделиться

Вам необходимо использовать дополнительный валидатор - asp: RequiredFieldValidator

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" ErrorMessage="Message!" />

Любой из валидаторов ASP.NET 2.0 на основе BaseValidator (кроме самого RequiredFieldValidator, конечно) не проверяет указанное поле на быть пустым.

Между прочим, чтобы настроить UserControl для проверки с помощью таких валидаторов, используйте

[System.Web.UI.ValidationProperty("PropertyName")]
1
ответ дан 5 December 2019 в 05:25
поделиться

Другой вариант - использовать .net CustomValidator , установить его ValidateEmptyText на True , а для проверки адреса электронной почты вы можете использовать функцию JavaScript, которая будет указана в свойстве ClientValidationFunction валидатора.

0
ответ дан 5 December 2019 в 05:25
поделиться

Если вы хотите обрабатывать это поле как обязательное, тогда лучше перейдите на RequiredFieldValidator.

    <asp:RequiredFieldValidator ID="reqEmail" ControlToValidate="txtEmail" runat="server" ErrorMessage="Email address required"></asp:RequiredFieldValidator>

Спасибо,

0
ответ дан 5 December 2019 в 05:25
поделиться

Не могли бы вы сделать что-то вроде

if (txtEmail.Text.Trim().length > 0) then
       validate

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

Ваше регулярное выражение довольно сложное, здесь вы должны найти более простое. В любом случае, вы можете сделать что-то вроде этого: ^ (regex) {1} $

1
ответ дан 5 December 2019 в 05:25
поделиться

Одним из решений (не самым лучшим) является применение регулярного выражения:

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

Пример: someone@example.com

Но на самом деле, очень сложно написать и поддерживать хорошее регулярное выражение для проверки электронной почты. Вы не должны на 100% доверять вашему regex. В Интернете можно найти несколько статей об этой сложности:

18
ответ дан 5 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

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