遇到斜线时正则表达式破坏

时间:2016-06-27 11:54:30

标签: javascript regex

所以我有一个Regex解决方案来查找和替换内容,它通过查找开始和结束来工作,所以这两个:

var start = "/* Start: User One */", end = "/* End: User One */";

然后我有一个userCSS变量和一个newContent,newContent替换了userCSS中的所有内容。它的工作完全没有任何引用,但是当报价在混合中时,它就会破裂。

我觉得我需要逃避这些斜线,但我不太确定如何。

以下两个例子可以解释我正在努力解决的问题:

工作小提琴:https://jsfiddle.net/xxuqv30t/

打破引号(单引号和双引号):https://jsfiddle.net/samfahav/

添加background: url('/bg.jpg');的示例打破了正则表达式。

我在寻找什么:如何使用我目前的Regex解决方案来逃避报价?

var quote = function(str) {
        return str.replace(/([.?*+^$[\]/(){}|-])/g, "\\$1");
    };

var re = new RegExp(quote(start) + "[^/]+" + quote(end));
var newCss = userCSS.replace(re, newContent);

我认为正则表达式正在寻找开始和结束,当它试图通过并点击报价时,它会退回并失败。

编辑:似乎斜线打破了它,而不是引号/括号。

1 个答案:

答案 0 :(得分:0)

你正在逃避正则表达式中的反斜杠。

您目前有([.?*+^$[\]/(){}|-]) 它应该是([.?*+^$[\]\/(){}|-])

没有转义反斜杠,正则表达式通过和错误导致它不是可接受的格式。