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

如何仅替换字符串中间的双引号(不修改首尾双引号)

解决仅替换字符串中间转义双引号的问题

原正则的问题在于,它没有排除字符串开头的&quot;——开头的&quot;满足(?<=^|[^&quot;])(^匹配开头位置),同时(?=\S.*&quot;)也成立(后面有内容和结尾的&quot;),因此被错误替换。

要实现仅替换中间的&quot;,需明确排除字符串开头的第一个&quot;和字符串结尾的最后一个&quot;,以下是可行的解决方案:

正则表达式与示例代码

let str = '&quot;This is a &quot;test&quot; string with &quot;quotes&quot; in the middle.&quot;';
// 匹配既不在开头、也不在结尾的 &quot;
let result = str.replace(/(?<!^)&quot;(?!$)/g, 'replacement');
console.log(result);

运行结果

&quot;This is a replacementtestreplacement string with replacementquotesreplacement in the middle.&quot;

正则说明

  • (?<!^):负向零宽断言,确保当前位置不是字符串开头,直接排除第一个&quot;
  • &quot;:匹配目标转义双引号
  • (?!$):负向零宽断言,确保当前位置不是字符串结尾,直接排除最后一个&quot;
  • /g:全局匹配标记,替换所有符合条件的&quot;

如果需要更严谨地匹配被内容包裹的中间引号(避免替换孤立的中间引号,若有此需求),可调整为匹配前后都有非引号内容的&quot;:

let result = str.replace(/(?<=[^&quot;])&quot;(?=[^&quot;])/g, 'replacement');

该正则会匹配前后都存在非&quot;字符的转义双引号,同样不会触及开头和结尾的引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:54:50