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

使用JavaScript正则替换引号为瑞士格式并解决误替换问题

解决瑞士格式引号替换的正则方案

要解决单引号缩写(比如that’s)被误替换的问题,关键是区分真正的引用引号和缩写中的撇号,可以通过正则的环视断言精准定位引用引号,同时一步完成所有替换:

最终实现代码

const inputText = `this "example": this «example»
this “example”: this «example»
this ‘example’: this ‹example›
that’s a test sentence
‘don’t forget this case’`;

const convertedText = inputText.replace(
  /(?<!\w)([&quot;“”„])|(?<!\w)([‘’])|([&quot;“”„])(?!\w)|([‘’])(?!\w)/g,
  (match, doubleLeft, singleLeft, doubleRight, singleRight) => {
    if (doubleLeft) return '«';
    if (singleLeft) return '‹';
    if (doubleRight) return '»';
    if (singleRight) return '›';
    return match;
  }
);

方案说明

  1. 环视断言精准定位:
    • (?<!\w):反向否定环视,确保引号前面不是单词字符(排除缩写中间的撇号,比如that’s里的’前面是t,属于单词字符,不会被匹配)
    • (?!\w):正向否定环视,确保引号后面不是单词字符(排除缩写中间的撇号,比如that’s里的’后面是s,属于单词字符,不会被匹配)
  2. 分组区分引号类型:
    • 四个捕获组分别对应:左双引号、左单引号、右双引号、右单引号
    • 替换函数根据捕获到的引号类型,返回对应的瑞士格式引号(«/»对应双引号,‹/›对应单引号)
  3. 一步完成替换:通过一个正则匹配所有需要替换的场景,无需多次调用replace

测试效果

  • 原句that’s → 处理后仍为that’s(缩写撇号保留)
  • 原句‘don’t do that’ → 处理后为‹don’t do that›(仅首尾引用引号被替换,中间缩写撇号保留)
  • 各类双引号("、“、”、„)均被替换为«...»

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:15:35