【问题标题】:Email Validation in jQuery using RegExp使用 RegExp 在 jQuery 中进行电子邮件验证
【发布时间】:2015-08-26 14:28:38
【问题描述】:

我必须验证一个电子邮件字段,该字段可以包含多个用 (;) 分隔的电子邮件地址。以下是我使用的代码

$("body").find(".reqEmail").filter(function(){
        var regex = new RegExp(/^[_A-Za-z0-9-]+[^(),:;<>\\[\\]@]*@[^(),:;<>\\[\\]@]*(\\.[A-Za-z]{2,})+$/);///^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        var email=$(this).val()
        if(regex.test(email)==false){
                e.preventDefault();
                $(this).css("border","solid 1px red");
                $(this).parent().find("#ReceAppEmail").html("Invalid Email!!");
                }
                else{return true;}
    });

它总是给出错误信息,即使我插入 1 个电子邮件地址。我找不到我哪里出错了。有什么建议吗?
仅供参考:这包含在表单提交中 (onsubmit)

【问题讨论】:

  • 你能和我们分享一下错误信息吗?
  • 你需要var result = value.split(",")拆分它们
  • 你应该用“;”分割字符串然后分别解析每一个
  • 错误消息意味着我收到了输入无效电子邮件@Stef时应该得到的错误

标签: javascript jquery regex email


【解决方案1】:

你可以通过下面的代码做到这一点。

function validatecommSeptEmail(commSeptEmail)
{
    var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$/;
    return (regex.test(commSeptEmail)) ? true : false;
}

function validateMultiplecommSeptEmails(emailcntl, seperator)
{
    var value = emailcntl.value;
    if (value != '') {
        var result = value.split(seperator);
        for (var i = 0; i < result.length; i++) {
            if (result[i] != '') {
                if (!validatecommSeptEmail(result[i])) {
                    emailcntl.focus();
                    alert('Please check, `' + result[i] + '` email addresses not valid!');
                    return false;
                }
            }
        }
    }
    return true;
}

如何使用?

onblur="validateMultiplecommSeptEmails(this,',');"

【讨论】:

  • 这个答案也有效,但我不能接受两个答案。但@rsnorman15 的回答更符合我的要求
  • 如果你不能接受也没关系,因为 SO 是为了帮助全世界的程序员,所以不管你接受不接受,但我们更关心我们能帮助你。
【解决方案2】:

试试这个

function validateEmail(email) {
    var regixExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    $(".reqEmail").css("border","solid 1px red");
    $("#ReceAppEmail").html("Invalid Email!!");
    return regixExp.test(email);
}

【讨论】:

    【解决方案3】:

    您可以使用下面的正则表达式获取所有用分号分隔的电子邮件地址:

    /(?:((?:[\w-]+(?:\.[\w-]+)*)@(?:(?:[\w-]+\.)*\w[\w-]{0,66})\.(?:[a-z]{2,6}(?:\.[a-z]{2})?));*)/g
    

    http://regexr.com/3b6al

    【讨论】:

    • 棒极了,但我认为 OP 不想获得有效的电子邮件,OP 实际上想要验证所有由 , 分隔的电子邮件
    • 是的,你是完全正确的。我在他添加他的代码之前回答了,所以这在当时是有道理的。
    • 上述正则表达式与仅验证电子邮件地址略有不同,它实际上也验证了所有用分号分隔的电子邮件。捕获的组应该是个人电子邮件。
    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2012-09-15
    • 2013-12-21
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多