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
在正则表达式中意味着一些特殊的东西,但在字符串中 \s
与 s
.
相同
您需要对 \
进行转义,以便正则表达式解析器能够识别它。
new RegExp("\{[.\s\w:;-]*\}","ig");
检查此更新 fiddle。
你必须转义斜线。纹身
new RegExp("{[.\s\w:;-]*}","ig");
我的字符串是:
...
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
在正则表达式中意味着一些特殊的东西,但在字符串中 \s
与 s
.
您需要对 \
进行转义,以便正则表达式解析器能够识别它。
new RegExp("\{[.\s\w:;-]*\}","ig");
检查此更新 fiddle。
你必须转义斜线。纹身
new RegExp("{[.\s\w:;-]*}","ig");