正则表达式用多个字符替换字符串匹配模式
Regex replace strings matching pattern with multiple charercters
我有这样的字符串
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
我希望输出采用 handlebars 语法,例如
const str = "Today is going to be {{city-temp}} in {{city-name}}"
我在尝试匹配此模式时遇到问题。
我可以看到如果我这样做
str.replace(/[()]/g,"")
我得到了没有括号的字符串。
但我不知道如何搜索整个模式,如下所示,我找到了以 @[
开头并以 )
结尾的任何内容,我不想只是从 @
本身开始,因为字符串中有时我不想删除 @
后面没有 [
/[\@\[A-Za-z0-9\](A-Za-z0-9-)
你可以使用
str = str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{}}")
见regex demo。 详情:
@\[
- @[
字符串
[^\][]*
- [
和 ]
以外的零个或多个字符
]\(
- ](
字符串
([^()]*)
- 第 1 组 (</code>):除 <code>(
和 )
之外的任何零个或多个字符
\)
- 一个 )
字符。
查看 JavaScript 演示:
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
console.log(str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{}}"))
我有这样的字符串
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
我希望输出采用 handlebars 语法,例如
const str = "Today is going to be {{city-temp}} in {{city-name}}"
我在尝试匹配此模式时遇到问题。
我可以看到如果我这样做
str.replace(/[()]/g,"")
我得到了没有括号的字符串。
但我不知道如何搜索整个模式,如下所示,我找到了以 @[
开头并以 )
结尾的任何内容,我不想只是从 @
本身开始,因为字符串中有时我不想删除 @
后面没有 [
/[\@\[A-Za-z0-9\](A-Za-z0-9-)
你可以使用
str = str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{}}")
见regex demo。 详情:
@\[
-@[
字符串[^\][]*
-[
和]
以外的零个或多个字符
]\(
-](
字符串([^()]*)
- 第 1 组 (</code>):除 <code>(
和)
之外的任何零个或多个字符
\)
- 一个)
字符。
查看 JavaScript 演示:
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
console.log(str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{}}"))