在javascript问题中替换字符串中的所有出现

时间:2015-06-02 12:10:37

标签: javascript regex

这是我的js代码:

html = html.replace("/["+increment+"]/gi", '[' + counter + ']');

其中increment为0且计数器为1 或

html = html.replace("/[0]/gi", '[1]');

我的版本不会在我的字符串中用[1]替换[0]。为什么?

2 个答案:

答案 0 :(得分:1)

您需要使用RegExp构造函数,因为正则表达式是动态的

var regex = new RegExp("\\[" + increment + "\\]", 'gi')
html = html.replace(regex, '[' + counter + ']');

如果需要,还可以清理动态变量

if (!RegExp.escape) {
    //A escape function to sanitize special characters in the regex
    RegExp.escape = function (value) {
        return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
    };
}



//You could also escape the dynamic value it is an user input
var regex = new RegExp("\\[" + RegExp.escape(increment) + "\\]", 'gi')
html = html.replace(regex, '[' + counter + ']');

答案 1 :(得分:0)

使用这种方式:

html = html.replace(new RegExp("\\["+increment+"\\]", "gi"), '[' + counter + ']');

这使用了动态值。