Проверка регулярных выражений по электронной почте - PullRequest
8 голосов
/ 16 апреля 2010

Может ли кто-нибудь исправить приведенное ниже выражение, чтобы не допустить пустое поле?

<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 ]

18 голосов
/ 16 апреля 2010

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

^([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% своему регулярному выражению. Вы можете найти несколько статей об этой трудности в Интернете:

11 голосов
/ 16 апреля 2010

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

1 голос
/ 16 апреля 2010

Разве вы не можете сделать что-то вроде

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

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

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

1 голос
/ 16 апреля 2010

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

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

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

Кстати, чтобы пользовательский UserControl мог быть проверен такими валидаторами, используйте

[System.Web.UI.ValidationProperty("PropertyName")]
0 голосов
/ 25 марта 2012

Это можно сделать просто используя класс Regex в System.Text.RegularExpressions:

private bool ValidateEmail()
{
    string email = txtemail.Text;
    Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
    Match match = regex.Match(email);
    if (match.Success)
       return true;
    else
       return false;
}
0 голосов
/ 22 февраля 2012
void Page_Load(Object sender, EventArgs e)
{
    string uNameExpr = "^[a-zA-Z](.{1,9})$";
    string phoneExpr = 
        "((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}";

    // Define validation expressions.
    RegExprVal1.ValidationExpression = uNameExpr;
    RegExprVal2.ValidationExpression = phoneExpr;

    ReqFldVal1.Text = "User name is required";
    RegExprVal1.Text = "Must be between 2 to 10 characters";
    RegExprVal2.Text = "Please provide a valid number: (425) 555-0187";
    // ErrorMessages appear in ValidationSummary.
    RegExprVal1.ErrorMessage = "Incorrect UserName format. Name" +
        " can be 2 to 10 characters long";
    ReqFldVal1.ErrorMessage = "User name required";
    RegExprVal2.ErrorMessage = 
        "Please provide a valid number: (000) 000-0000";
}

void OnCmdClick(Object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        ActiveForm = Form2;
    }
}
0 голосов
/ 16 апреля 2010

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

0 голосов
/ 16 апреля 2010

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

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

Спасибо,

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