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

JavaScript正则添加句末双空格时,如何忽略U.S.这类缩写?

解决方案:处理句末双空格并忽略缩写(如U.S.)

你之前加的[^U.S.]是字符集,意思是匹配不是U、.、S的任意单个字符,替换时会把这个字符和后面的标点一起换掉,所以才会出现句子末尾字符丢失的问题。

要实现忽略U.S.这类缩写的需求,应该用负向回顾断言,它能确保匹配的标点前面不是指定的缩写内容。修改后的代码如下:

let report = String(item.Report);
let reportDoubleSpace = report.replace(/(?<!U\.S\.)[!?.]+(?=$|\s)/g, ".&emsp13;");

正则规则说明:

  • (?<!U\.S\.):负向回顾断言,检查当前标点前面不是U.S.(注意正则里.要转义成\.,否则会匹配任意字符)
  • [!?.]+:匹配一个或多个句末标点(!、?、.)
  • (?=$|\s):正向展望断言,确保标点后面是文本结尾或者空白字符,保证只匹配句末的标点

如果需要忽略更多缩写(比如Mr.、Mrs.),可以扩展断言部分,用|分隔多个例外:

let reportDoubleSpace = report.replace(/(?<!(U\.S\.|Mr\.|Mrs\.))[!?.]+(?=$|\s)/g, ".&emsp13;");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:45:32