Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串创建Javascript正则表达式-为什么它不起作用?_Javascript_Regex - Fatal编程技术网

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

从字符串创建Javascript正则表达式-为什么它不起作用?,javascript,regex,Javascript,Regex,我的字符串是: ... abc { color: red; border-color: black; } ... 我想在花括号之间匹配(替换)所有东西。我成功地编写了如下工作regexp: /\{[.\s\w:;-]*\}/ig 但我需要从字符串创建regexp,但它不起作用: new RegExp("{[.\s\w:;-]*}","ig"); // does not work 一切都很顺利:您可以使用: var re = new RegExp("\\{[\\S\\s]*\\}

我的字符串是:

...
abc {
   color: red;
   border-color: black;
}
...
我想在花括号之间匹配(替换)所有东西。我成功地编写了如下工作regexp:

/\{[.\s\w:;-]*\}/ig
但我需要从字符串创建regexp,但它不起作用:

new RegExp("{[.\s\w:;-]*}","ig"); // does not work
一切都很顺利:

您可以使用:

var re = new RegExp("\\{[\\S\\s]*\\}", "g");
以匹配JS中的换行符

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

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

\s
在regexp中表示特殊的含义,但是字符串中的
\s
s
相同

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

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

检查此更新的小提琴

你必须躲开刀砍。塔茨

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

创建regexp后,请尝试打印它。应该很清楚发生了什么。为什么要用regexp解析CSS?