在javascript中将正则表达式存储在字符串中?

Store regex in string in javascript?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Converting user input string to regular expression
javascript new regexp from string

我在javascript中遇到了一点关于regex的问题(我还不太习惯在javascript中使用regex)。我想替换字符串中的一些东西,我注意到编写regex的语法似乎没有'"这样:var replacedtitle = title.replace(/\[.*?\]/g,"");

现在这一切都按预期工作了,但是我希望用户能够在不更改代码的情况下从界面添加自己的regex(我为一个不编码的朋友做了一个私人项目,我希望能够在需要替换新的东西而不是每次都重新打包时,只将regex发送给他输入)。我通过一个xul文本框(这是一个firefox加载项,但应该与HTML文本框相同)来实现这一点,他在其中输入regex,将其添加到一个json对象并保存。我试着做这样的事情:

1
2
3
4
var replacedtitle ="";
for(a = 0; a < regex.data.length;a++){
    replacedtitle = title.replace(regex.data[a].regex,"");
}

但它不起作用。我怀疑这是因为regex.data[a].regex会被当作一个字符串,然而replace()似乎不把字符串当作第一个参数,对吧?

我对此有点不确定,任何帮助都将不胜感激。


你可以用EDCOX1×0来创建一个ReGEX对象,并用字符串提供模式和修饰符;

1
var re = new RegExp("\\[.*?\\]","g");


将字符串拆分为模式和修饰符。

1
2
3
4
5
6
7
8
function getRegFromString(string){

     var a = string.split("/");
     modifiers= a.pop(); a.shift();
     pattern = a.join("/");
     return new RegExp(pattern, modifiers);
}
getRegFromString("/\[.*?\]/gim");


您可以像本教程中那样创建一个新的regexp对象。


1
2
var string ="/\[.*?\]/g";
var regex = new RegExp(string);

我会正常工作。