Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是Eval'的正则表达式;字里行间_Javascript_Regex_Eval - Fatal编程技术网

Javascript 是Eval'的正则表达式;字里行间

Javascript 是Eval'的正则表达式;字里行间,javascript,regex,eval,Javascript,Regex,Eval,我正在尝试创建一个不好的单词过滤器,它抛出包含所提供列表中任何单词的tweet,不区分大小写。唯一的问题是我想对坏单词列表进行简单编码,这样坏单词就不会下载到客户端浏览器。我想我唯一能做的就是计算一个正则表达式。唯一的问题是,eval似乎不适用于包含的\b。如何让正则表达式r3和r4在下面工作 // encoded bad word list decoded to below var badwordlist = 'Sam,Jimmy,Johnny'; var restr = badword

我正在尝试创建一个不好的单词过滤器,它抛出包含所提供列表中任何单词的tweet,不区分大小写。唯一的问题是我想对坏单词列表进行简单编码,这样坏单词就不会下载到客户端浏览器。我想我唯一能做的就是计算一个正则表达式。唯一的问题是,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 );

在RegExp()构造函数中使用双转义:

var r4 = new RegExp('\\b('+restr+')\\b','i');

无论何时从字符串创建正则表达式,都需要转义转义字符。另外,不要使用eval()创建正则表达式:-)

ahhh!!!对工作!JS相对较新,所以我现在才开始意识到eval到底有多糟糕!谢谢在正则表达式中使用
\b
样式的单词边界时需要注意。@tchrist:我想你的评论应该指向OP,我只是回答了这个问题:-)