我用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