如何在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 );
}
答案 0 :(得分:2)
解决此问题的一种简洁方法是将域名提取到变量中(通过在@之后获取子字符串),然后针对域数组检查值。
在正则表达式中执行此操作会为将来要阅读此代码的人创造一场噩梦!
示例:
var email = "name@example.com";
var domainName = email.slice((email.indexOf("@") + 1), email.length);
然后检查domainName
是否在域名列表中。
答案 1 :(得分:0)
添加例外并对其进行验证..
在您的情况下,您可以使用multile正则表达式并像这样验证它们。
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
并使用!返回前面...这意味着如果其中一个存在,您的支票将返回真实但是!将更改标志,以便为假,并相应地在您的代码中使用它。
email: function( value, element ) {
return (this.optional( element ) ||
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@yahoo.com$/.test( value )
|| /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@hotmail.com$/.test( value ) );
}
另一种方法是将所有这些知道域合并到一个正则表达式中并检查它。