例如,我有一串文本
[text1] [text2] [text3]
我想用“${”替换“[”字符,用“}”替换“]”字符,但仅在这种情况下,当“[”后面跟着“]”时。
例如
[text1] [[text2] [text3]
应该导致
${text1} [${text2} ${text3}
如何使用 Javascript 中的正则表达式来实现这一点?
我写了这样的东西
someString = someString.replace(/\[/g, "${");
someString = someString.replace(/]/g, "}");
但这对我的问题不起作用,它只是替换了每个括号。
您可以使用
var s = "[text1] [[text2] [text3]";
console.log(s.replace(/\[([^\][]+)]/g, "$${$1}"));
Details
-
\[
- a [
char
-
([^\][]+)
- 第 1 组:a否定字符类 https://www.regular-expressions.info/charclass.html匹配除以下任意 1 个以上字符[
and ]
(请注意,在 JS 正则表达式的字符类中,]
char 必须始终被转义,即使它被放置在否定类的开头)
-
]
- a ]
char(在字符类之外,]
并不特殊,不必转义)。
在替换模式中,$$
代表字面意思$
char, {
adds a {
char, $1
插入组 1 值,然后插入}
被添加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)