从字符串创建的Javascript正则表达式 - 为什么它不起作用?

时间:2015-01-05 14:01:25

标签: javascript regex

我的字符串是:

...
abc {
   color: red;
   border-color: black;
}
...

我想在花括号之间匹配(替换)所有内容。我设法写了这样的工作正则表达式:

/\{[.\s\w:;-]*\}/ig

但我需要从字符串创建regexp,它不起作用:

new RegExp("{[.\s\w:;-]*}","ig"); // does not work

一切都在小提琴上:http://jsfiddle.net/3ru18Lj9/

3 个答案:

答案 0 :(得分:4)

您可以使用:

var re = new RegExp("\\{[\\S\\s]*\\}", "g");

在JS中匹配换行符。

  • 构建\\对象时,必须使用RegExp(双重转义)。
  • 由于JS没有s(DOTALL)标记,因此请使用[\S\s]来匹配包括换行符在内的所有字符。

PS:但请记住,它不会处理嵌套大括号。

答案 1 :(得分:2)

正则表达式中的

\s表示特殊内容,但字符串中的\ss相同。

您需要转义\,以便正则表达式解析器可以看到它。

new RegExp("\\{[.\\s\\w:;-]*\\}","ig");

答案 2 :(得分:1)

检查这个更新的小提琴。

你必须逃避斜线。 tats it

new RegExp("{[.\\s\\w:;-]*}","ig");

http://jsfiddle.net/khaleel/3ru18Lj9/2/