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

如何在存在撇号时为单引号间的文本添加颜色?

问题解决

两个问题的原因

  1. 单引号消失+标签错误:你的替换字符串没保留原单引号,而且<span>标签未闭合(少了>),导致结构错误。
  2. 误匹配所有格:当前正则/'([^']*)'/g会匹配所有成对单引号,包括It's、Bob's这类所有格的单引号。

修正后的代码

<div id="chapter">It's Bob's house. 'division' needs style.</div>
const chapter = document.querySelector('#chapter');
chapter.innerHTML = chapter.innerHTML
  // 匹配非所有格的单引号对,保留单引号并给内部内容添加红色样式
  .replace(/(?<!\w)'([^']*)'(?!\w)/g, "'<span style='color:red'>$1</span>'");

正则说明

  • (?<!\w):负向回顾断言,确保单引号前不是字母/数字,排除It's这类所有格的左单引号。
  • '([^']*)':捕获单引号包裹的内容。
  • (?!\w):负向前瞻断言,确保单引号后不是字母/数字,排除Bob's这类所有格的右单引号。

这样调整后,只有独立引用的单引号内容(比如'division')会被添加红色样式,所有格的单引号不会被误处理,同时保留了原单引号,标签也正确闭合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:05:24