2
我試圖創建一個壞詞過濾器拋出包含在提供的列表中,不區分大小寫任何的話鳴叫正則表達式。唯一的問題是我想對壞詞列表進行簡單的編碼,以便不好的單詞不會下載到客戶端瀏覽器。我認爲我能做到的唯一方法就是評估正則表達式。唯一的事情是,eval似乎不適用於包含\ b的。我如何獲得正則表達式r3和r4以下的工作?是Eval'ed與字邊界
// encoded bad word list decoded to below
var badwordlist = 'Sam,Jimmy,Johnny';
var restr = badwordlist.split(',').join('|');
// this works
var r2 = /\b(Sam|Jimmy|Johnny)\b/i;
var ndx2 = "safads jimmy is cool".search(r2);
// these don't
var r3 = eval('/\b('+restr+')\b/i');
var ndx3 = "safads jimmy is cool".search(r3);
var r4 = new RegExp('\b('+restr+')\b','i');
var ndx4 = "safads jimmy is cool".search(r4);
alert(restr);
alert('ndx2:'+ndx2 +',ndx3:'+ndx3 + 'ndx4:'+ ndx4);
AHHHH創建正則表達式!是!!成功了!與JS相對較新,所以我現在纔開始意識到eval究竟有多糟糕!謝謝! – dishwasher 2010-08-20 16:12:06
一個需要是[極其小心]當使用(http://stackoverflow.com/questions/4213800/is-there-something-like-a-counter-variable-in-regular-expression-replace/4214173#4214173)在正則表達式中'\ b'樣式的單詞邊界。 – tchrist 2010-11-18 16:20:14
@tchrist:我覺得你的評論應該直指OP,我只是回答了這個問題:-) – 2010-11-18 16:32:59