You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery中替换[{ }]括号及其内部的文本?

解决jQuery中替换[{ }]括号及其内部文本的问题

你遇到的问题主要有两个点:一是正则表达式没正确匹配整个[{...}]块,二是忽略了replace方法不会修改原字符串,得把结果重新赋值才行。

问题分析

  • 你的第一个正则/\[{(.*?)}]/g用了非贪婪匹配.*?,会在遇到第一个}就停止匹配,所以只能命中[{FName}这部分,剩下的{LName}]根本没被替换到。
  • 第二个正则/{.*}/连外层的[]都没包含,再加上没处理赋值问题,自然达不到你想要的效果。

正确的实现方式

我们需要写一个能精准匹配从[{开始到}]结束完整块的正则,同时记得把替换后的结果赋值给变量:

var text = "Hi [{FName}{LName}]";
// 贪婪模式确保匹配到最后的}],覆盖整个[{...}]块
text = text.replace(/\[{.*}]/g, 'contactname');
console.log(text); // 输出: "Hi contactname"

如果你的文本里可能有多个独立的[{...}]块(比如"Hi [{FName}] and [{LName}]"),上面的贪婪正则会把第一个[{到最后一个}]的内容全匹配,这时候就得用更严谨的非贪婪写法,保证只匹配每个独立的块:

var text = "Hi [{FName}] and [{LName}]";
// 用[\s\S]匹配所有字符(包括换行),非贪婪模式匹配到最近的}]
text = text.replace(/\[{[\s\S]*?}]/g, 'contactname');
console.log(text); // 输出: "Hi contactname and contactname"

补充说明

  • replace方法是返回新字符串,不会修改原变量,所以一定要把结果重新赋值给text(或者新变量)。
  • 如果你的文本里存在嵌套的{}(比如[{FName{MidName}}{LName}]),上面的正则可能会失效,这种情况得用更复杂的正则或者递归处理,但一般业务场景里这种情况很少见。

内容的提问来源于stack exchange,提问作者geethika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:05