Я пытаюсь создать фильтр плохих слов, который выбрасывает твиты, содержащие любое из слов в предоставленном списке, без учета регистра. Единственная проблема заключается в том, что я хочу сделать простое кодирование списка плохих слов, чтобы плохие слова не загружались в браузер клиента. Я думаю, что единственный способ сделать это - вывести регулярное выражение. Единственное, eval, похоже, не работает с включенными \ b. Как заставить работать регулярные выражения r3 и r4 ниже?
// 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 );