从stringJavaScript新regexp

我正在尝试创build类似于此的内容:

var regexp_loc = /e/i; 

除了我想正则expression式依赖于一个string,所以我试图使用新的RegExp,但我无法得到我想要的。

基本上我想在上面的正则expression式中的e是一个stringvariables,但我失败的语法。

我尝试了这样的事情:

 var keyword = "something"; var test_regexp = new RegExp("/" + keyword + "/i"); 

基本上我想search一个较大的string中的子string,然后用其他stringreplacestring,不区分大小写。

问候,亚历山大

你需要传递第二个参数 :

 var r = new RegExp(keyword, "i"); 

您还需要转义string中的任何特殊字符以防止正则expression式注入攻击。

您还应该记住要注意string中的转义字符…

例如,如果你想检测一个单一的号码\ D {1},你做到了这一点…

 var pattern = "\d{1}"; var re = new RegExp(pattern); re.exec("1"); // fail! :( 

这将失败,因为最初\是一个转义字符,你将需要“逃生逃生”,像这样…

 var pattern = "\\d{1}" // <-- spot the extra '\' var re = new RegExp(pattern); re.exec("1"); // success! :D 

使用RegExp构造函数时,不需要使用正则expression式字面值时的斜线。 所以:

 new RegExp(keyword, "i"); 

请注意,您传入第二个参数中的标志。 在这里看到更多的信息。

var keyword =“something”;

var test_regexp = new RegExp(something,“i”);