如何在javascript验证中为电子邮件添加规则条件


how to add a rule condition for email in javascript validation

我有一个电子邮件输入字段在我的表单。验证是使用javascript完成的。电子邮件验证没有问题,它工作正确。但我想检查电子邮件的附加条件,如果有人没有电子邮件,他/她可以在字段中键入"no"。这是"NO"或有效的电子邮件是允许的。请帮帮我。我现在的邮件规则是

                    My_email: {  
                    required: true,
                    email:true,                                                       
                },

对于javascript验证,如果使用jquery,请查看jquery validate

http://jqueryvalidation.org/documentation/

简单例子

创建规则
 var loginValidationConfig = {                    
    wrapper: "div",
    rules: {
            password: {
                required: true,
            },
            email: {
                required: true,
                email: true
            }
        },
        messages: {
            password: {
                required: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again.",                    
            },
            email: {
                required: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again.",                    
                email: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again."
            }
        }
}     

然后在表单上写

 $(this).validate(loginValidationConfig);

将在字段旁边打印验证无论如何,你至少需要阅读部分文档

如果验证电子邮件地址的函数是对Sudakatux的回答的评论中给出的函数

var checkMail = function IsEmail(email) { 
  var regex = /^([a-zA-Z0-9_.+-])+'@(([a-zA-Z0-9-])+'.)+([a-zA-Z0-9]2,4})+$+no+NO/;
  return regex.test(email);
}

这让我怀疑它是否能有效地验证电子邮件地址(例如:结尾的"museum"比你假设的仅仅四个字母多一点),但这可能是C& p的问题,当然,加上缺乏格式化注释的能力,所以我认为它是有效的。

如前所述:除了一些基本的检查之外,您不验证电子邮件地址客户端,例如:是否有@-sign和一些点,并通过发送电子邮件(不仅仅是测试电子邮件!)来完成其余的工作,并查看它是否反弹。对于这种类型的检查,有一些经过良好测试的正则表达式可以在网上找到,但也可以在这里找到。

用最简单的方法

var checkMail = function (email) { 
  var regex = /^.+@[^@]+?'.[a-zA-Z]+$/;
  return regex.test(email);
}

var email1 = "a.s@g.a"; // correct but does not exist
var email2 = "a@g";
var email3 = "ag.de";
var email4 = "ag.@.d@e";
var email5 = "a@g@d.de";
console.log("1 " + checkMail(email1));
console.log("2 " + checkMail(email2));
console.log("3 " + checkMail(email3));
console.log("4 " + checkMail(email4));
console.log("5 " + checkMail(email5));

但这不是你想要的,你想要检查不止一个值,并根据这个值做一些不同的事情。您可以使用正则表达式检查其中一个值是否存在,但不知道是哪一个。你需要两个正则表达式。

假设你想要"NO"(大写"N"和大写"O")

var checkMail = function (email) { 
  var regexEmail = /^.+@[^@]+?'.[a-zA-Z]+$/;
  var regexNO = /^NO$/;
  if(!regexEmail.test(email)){
    if(!regexNO.test(email)){
      return -1; // nothing in it
    }
    return 1; // Intentionally no email address given
  }
  return 2; // something vaguely resembling an email given
}

你可以这样用:

var valueEmailField = checkMail(email)
if(valueEmailField > 0){
  if(valueEmailField == 1){
    // User said "NO", act accordingly
  }
  // user gave something email-like, act accordingly
}
else {
  // email field empty, act accordingly
}

从用户的角度来看,最好使用复选框而不是文本输入。复选框更不容易出错。是的,有可能打错两个字母的单词。

作为选项,例如:

[]我希望你的回答通过电子邮件发送,请使用以下地址:|___________________________|邮箱地址

好吧,也许比这更优雅一点;-)

先测试复选框,如果复选框被选中,测试条目的有效性