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

Javascript regex created from string - why it does not work?

我的字符串是:

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

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

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

但我需要从字符串创建正则表达式,但它不起作用:

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

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

您可以使用:

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

在 JS 中也匹配换行符。

  • 构造RegExp对象时必须使用\(双重转义)。
  • 由于 JS 没有 s (DOTALL) 标志,使用 [\S\s] 匹配所有字符,包括换行符。

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

\s 在正则表达式中意味着一些特殊的东西,但在字符串中 \ss.

相同

您需要对 \ 进行转义,以便正则表达式解析器能够识别它。

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

检查此更新 fiddle。

你必须转义斜线。纹身

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

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