3

可能重复:
将用户输入字符串转换为正则表达式
javascript new regexp from string

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

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

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

但它不会工作。我怀疑这是因为regex.data[a].regex将被视为一个字符串,但 replace() 似乎没有将字符串作为第一个参数,对吧?

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

4

3 回答 3

13

您可以改为创建一个 RegEx 对象new,并为模式和修饰符提供字符串;

var re = new RegExp("\\[.*?\\]", "g");
于 2012-10-03T15:20:03.270 回答
2

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

function getRegFromString(string){

     var a = string.split("/");
     modifiers= a.pop(); a.shift();
     pattern = a.join("/");
     return new RegExp(pattern, modifiers);
}
getRegFromString("/\[.*?\]/gim");
于 2012-10-03T16:06:45.840 回答
-2
var string = "/\[.*?\]/g";
var regex = new RegExp(string);

会正常工作。

于 2012-10-03T15:22:00.567 回答