Javascript替换开始和结束括号

qaz*_*y23 7 javascript regex replace

例如,我有一串文字

[text1] [text2] [text3]
Run Code Online (Sandbox Code Playgroud)

我想将"["字符替换为"$ {"和"]"字符替换为"}",但仅在这种情况下,当"["后跟"]"时.

例如

[text1] [[text2] [text3]
Run Code Online (Sandbox Code Playgroud)

应该导致

${text1} [${text2} ${text3}
Run Code Online (Sandbox Code Playgroud)

如何在Javascript中使用正则表达式实现这一目标?

我写了这样的东西

someString = someString.replace(/\[/g, "${");
someString = someString.replace(/]/g, "}");
Run Code Online (Sandbox Code Playgroud)

但它不适用于我的问题,它只是取代了每个支架.

Wik*_*żew 11

你可以用

var s = "[text1] [[text2] [text3]";
console.log(s.replace(/\[([^\][]+)]/g, "$${$1}"));
Run Code Online (Sandbox Code Playgroud)

细节

  • \[- 一个[炭
  • ([^\][]+)- 组1:与除了和之外的任何1+ chrs匹配的否定字符类(注意在JS正则表达式中的字符类内部,char必须始终被转义,即使它被放置在否定的类开头)[]]
  • ]- ]char(在字符类之外,]不是特殊的,不必转义).

在替换模式中,$$代表文字$字符,{添加{字符,$1插入组1值,然后}添加a.