在 validate.js 脚本中验证公司电子邮件

Validate corporate emails in validate.js script

如何在 Validate.js 插件中验证公司电子邮件?防止用户输入非企业邮箱。 @gmail.com、@yahoo.com、@hotmail.com.

等电子邮件

这是Validate.js主脚本中电子邮件验证的部分:

email: function( value, element ) {
            return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
        }

添加异常并针对它们进行验证..

在您的情况下,您可以使用多重正则表达式并像这样针对它们进行验证..

  var regex1 =   what-ever-regex-is-@yahoo.com
  var regex2 =   what-ever-regex-is-@hotmail.com
  var regex3 =   what-ever-regex-is-@gmail.com
  var regex4 =   what-ever-regex-is-@live.com

并使用!在 return.. 前面,这意味着如果其中之一存在,您的检查将 return 为真,但是!将更改符号,使其为假,并相应地在您的代码中使用它。

 email: function( value, element ) {
        return (this.optional( element ) || 
 /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@yahoo.com$/.test( value ) 
    || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@hotmail.com$/.test( value )  );
    }

另一种方法是将所有这些已知域合并到一个正则表达式中并进行检查。

解决此问题的一种简洁方法是将域名提取到一个变量中(通过在 @ 后取一个子字符串),然后根据域数组检查该值。

在正则表达式中这样做会给将来阅读这段代码的人带来噩梦!

示例:

var email = "name@example.com";
var domainName = email.slice((email.indexOf("@") + 1), email.length);

然后检查 domainName 是否在域列表中。