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

如何修改正则匹配替换未闭合双引号实现直引号转弯引号?

解决方案

原有正则要求必须同时匹配成对的直双引号才会执行替换,当存在未闭合的开头直双引号时,匹配逻辑不触发,导致对应引号未被替换为左弯引号。

修改方案

你可以将结尾双引号设置为可选匹配,配合replace的回调函数判断是否存在闭合引号,分别输出对应的替换结果,示例代码如下:

const input = `"Line 1"

"Line 2

"Line 3"

Line 4`
 
const output = input.replace(/"([^"]*)("?)/g, (match, content, closeQuote) => {
  // 存在闭合双引号时同时输出左右弯引号,否则仅输出左弯引号
  return closeQuote ? `“${content}”` : `“${content}`
})
 
console.log(output)

正则说明

  • 开头的" 匹配直双引号开头
  • ([^"]*) 捕获分组1,匹配所有非双引号的文本内容
  • ("?) 捕获分组2,匹配可选的结尾直双引号,存在则说明是成对引号,不存在则说明是未闭合的开头引号

输出结果

运行上述代码后得到的输出和预期完全一致:

`“Line 1”

“Line 2

“Line 3”

Line 4`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:18:03