在JavaScript中验证电子邮件地址

时间:2015-01-16 19:20:05

标签: javascript asp.net

以下是我的问题:我尝试使用asp:RegularExpressionValidator验证文本框中的电子邮件,请参阅以下内容:

<telerik:RadTextBox ID="AlertMissedEmail"  Width="300" runat="server" Label="" MaxLength="500" TextMode="MultiLine"></telerik:RadTextBox>
                <asp:RegularExpressionValidator runat="server" ID="revEmail" ControlToValidate="AlertMissedEmail"
                                Display="None" ValidationExpression="^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)+$"
                                ValidationGroup="validationTourProperties" EnableClientScript="false" 
                                ErrorMessage="- Please enter a valid email address:(ex.) <b>john@gmail.com</b>" />

如果只有一封电子邮件,它可以正常工作,但我想让用户添加多个只能用分号分隔的电子邮件

我想首先在JS中检查它,所以如果用户插入空格或其他东西而不是分号,用户将获得一个具有正确格式的警报,如何插入它以便他可以修复电子邮件。

请帮我修复我的JS代码:

function formCheck(sender,args)
{
        //Getting the Email field value & text.
        var l_Email = $find("<%=AlertMissedEmail.ClientID %>").get_value();
        var l_EmailText = $find("<%=AlertMissedEmail.ClientID %>").get_textBoxValue();
        //Setting up the Reg expression for email.
        var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

        // 3). Check for reg expression of the email field.
        if (l_EmailText == "") { // text is empty email is not must.
             retValEmail = true;
        }

         if (l_EmailText != "") { // email is not empty check for reg 
            if (reg.test(l_Email)) {
                retValEmail = true;
            }
            else {
                alert("Please enter a valid email address");
                retValEmail = false;
            }
        }
}

2 个答案:

答案 0 :(得分:0)

我假设您发布的大多数代码都有效。我想你只需要查看类似split()函数的内容。一旦得到l_EmailText,您就可以致电:

var emails = l_EmailText.split(";");

分解每封电子邮件,然后迭代:

for (var i = 0; i < emails.length; i++) {
    // individual email check code goes here
}

单独检查每封电子邮件。您的正则表达式/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;似乎仅适用于一封电子邮件。

答案 1 :(得分:0)

我修改了你的功能。这没有经过测试。 希望它有所帮助...

function formCheck(sender,args)
    {
            //Getting the Email field value & text.
            var l_Email = $find("<%=AlertMissedEmail.ClientID %>").get_value();
            var l_EmailText = $find("<%=AlertMissedEmail.ClientID %>").get_textBoxValue();
           //Setting up the Reg expression for email.
            var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
           var hasInvalidMail = false;

           if (l_EmailText.length < 7) { // valid email to have 7 chars at least
                 return false;
            }

            //split emails if there is ;
            var emails = [];
            if(l_EmailText.indexOf(';') >= 0)
            {
                emails = l_EmailText.split(';');
            }
            else
            {
                emails[0] = l_EmailText;
            }

            //loop all emails
            for(var i=0; i<emails.length;i++)
            {
                if (!reg.test(l_Email)) {
                    //stop checking if we find error
                    hasInvalidMail = true;
                    break;
                }
            }  
            return hasInvalidMail;            
    }

您可以进行一些增强以仅返回有效的电子邮件