javascript - 正则表达式用多个字符替换匹配模式的字符串
问题描述
我有一个这样的字符串
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
我希望输出采用车把语法,例如
const str = "Today is going to be {{city-temp}} in {{city-name}}"
我在尝试匹配此模式时遇到了麻烦。
我可以看到,如果我这样做
str.replace(/[()]/g,"")
我得到没有括号的字符串。
但我不知道如何搜索整个模式,如下所示,我发现任何以 开头@[
和结尾的东西)
,我不想自己开始,@
因为字符串中可能有时间我没有不想删除@
后面没有a的地方[
/[\@\[A-Za-z0-9\](A-Za-z0-9-)
解决方案
您可以使用
str = str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{$1}}")
请参阅正则表达式演示。详情:
@\[
- 一个@[
字符串[^\][]*
[
- 除了and之外的零个或多个字符]
]\(
- 一个](
字符串([^()]*)
- 第 1 组 ( ):除and$1
之外的任何零个或多个字符(
)
\)
- 一个)
字符。
请参阅 JavaScript 演示:
const str = "Today is going to be @[City Temp](city-temp) in @[City Name](city-name)"
console.log(str.replace(/@\[[^\][]*]\(([^()]*)\)/g, "{{$1}}"))
推荐阅读
- charts - Chartjs - 在 xAxes 处插入标签
- python - 将两列设置为外键引用 SQLAlchemy 中的两个主键
- c# - Html.BeginForm 在区域后自动添加子文件夹
- snakemake - 使用蛇形运行 metabat2 和 checkM
- java - 可能考虑使用更短的 maxLifetime 值 - hikari 连接池 spring boot
- python - ValueError:无法推断类型
- 烧瓶,sqlite - flutter - Flutter 中的序列化和反序列化
- javascript - 如何使用 Javascript 检测滚动到页面的开头?
- pandas - 替换单个列中的非零值,熊猫数据框
- java - 从关系数据库中删除实体的问题