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

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

本文关键字:为什么 不起作用 正则表达式 Javascript 字符串 创建      更新时间:2023-09-26

我的字符串是:

...
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");

检查这个更新的小提琴。

你必须转义斜杠.

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

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