在JavaScript中验证电子邮件地址

在JavaScript中验证电子邮件地址,javascript,asp.net,Javascript,Asp.net,这是我的问题:我正在尝试使用asp:RegularExpressionValidator验证文本框中的电子邮件,请参见以下内容: <telerik:RadTextBox ID="AlertMissedEmail" Width="300" runat="server" Label="" MaxLength="500" TextMode="MultiLine"></telerik:RadTextBox> <asp:RegularExpr

这是我的问题:我正在尝试使用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;
            }
        }
}
函数formCheck(发送方,参数)
{
//获取电子邮件字段值和文本。
var l_Email=$find(“”)。get_value();
var l_EmailText=$find(“”)。get_textBoxValue();
//设置电子邮件的注册表表达式。
var reg=/^\w+([-+.]\w+*@\w+([-.]\w+*\.\w+([-.]\w+*$/;
//3).检查电子邮件字段的reg表达式。
如果(l_EmailText==“”){//text为空,则不必发送电子邮件。
retValEmail=true;
}
如果(l_EmailText!=“”){//电子邮件不是空的,请检查注册表
if(注册测试(l_电子邮件)){
retValEmail=true;
}
否则{
警报(“请输入有效的电子邮件地址”);
retValEmail=false;
}
}
}

我假设您发布的大部分代码都能正常工作。我想你只需要看看函数之类的东西。一旦您收到
l_EmailText
您可以拨打:

var emails = l_EmailText.split(";");
要分解每封电子邮件,然后进行迭代:

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

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

我稍微修改了您的功能。这没有经过测试。 希望对你有帮助

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;            
    }
函数formCheck(发送方,参数)
{
//获取电子邮件字段值和文本。
var l_Email=$find(“”)。get_value();
var l_EmailText=$find(“”)。get_textBoxValue();
//设置电子邮件的注册表表达式。
var reg=/^\w+([-+.]\w+*@\w+([-.]\w+*\.\w+([-.]\w+*$/;
var hasvalidmail=false;
如果(l_EmailText.length<7){//有效电子邮件至少有7个字符
返回false;
}
//拆分电子邮件(如果有);
var=[];
如果(l_EmailText.indexOf(“;”)>=0)
{
emails=l_EmailText.split(“;”);
}
其他的
{
电子邮件[0]=l_EmailText;
}
//循环所有电子邮件

对于(var i=0;i您的代码几乎正常工作。如果用户在两封或更多电子邮件之间放置逗号或任何其他字符而不是分号,我需要标识,并将其替换为分号。拆分功能不起任何作用。您还可以过滤无效电子邮件,只保留有效电子邮件。基本上,您将所有有效电子邮件推送到循环中的一个数组中并返回我会处理所有电子邮件,然后通知用户。