我用jquery的验证器validation.I有50名免费的电子邮件等(gmail.com,yahoo.com),所以我需要验证它。我选择阵列然后将其存储在阵列中的所有电子邮件。下面看看我的代码有,你可以看到我用普通expression.I正则表达式传递一个变量,但它不工作的me.It扔错误这样语法错误:无效的范围在字符类JQuery验证自由使用的电子邮件验证
我代码
$.validator.addMethod('nofreeemail', function (value) {
var emails = ["gmail.com","yahoo.com","hotmail.com"]
$.each(emails,function(i, val){
console.log("email", val)
var regex = new RegExp("/^([\w-.][email protected](?!"+val+")([\w-]+.)+[\w-]{2,4})?$/");
console.log("regex", regex)
return regex.test(value);
});
}, 'Free email addresses are not allowed.');
既然你不关心的电子邮件地址的第一部分,你为什么不把它分成'@'并且检查第二部分是否与你的免费主机列表相对? – cybrox
从构造函数表示法中移除正则表达式分隔符。你正在传递一个字符串字面模式,而不是正则表达式。并且双反斜杠和'val':'var regex = new RegExp(“^([\\ w - 。] + @(?!”+ val.replace(/ [ - \/\\^$ $ * +? 。()| [\] {}]/g,'\\ $&')+“)([\\ w - ] + \\。)+ [\\ w - ] {2,4})?$ “);'。我也相信'([\ w - ] +。)+'中的点必须被转义,它应该匹配一个文字点,对吧? –
为什么不'VAR正则表达式=新的RegExp( “/ ^([\ w - ] + @” + VAL + “$ /”);?' – VadimB