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

JavaScript按逗号分割字符串但忽略双引号内逗号的问题

解决按逗号分割字符串但忽略双引号内逗号的问题

你需要实现的是仅分割不在双引号包裹范围内的逗号,原正则表达式中多余的[:""]*片段干扰了引号对的计数逻辑,导致错误分割了引号内部的逗号。

修正后的代码实现

使用以下正则即可满足需求,它会确保待分割的逗号处于双引号对之外(即逗号后剩余的双引号总数为偶数):

function splitByCommas(str) {
    return str.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/);
}

测试验证

执行你的测试用例:

console.log(splitByCommas('gango.cs.{"test","asfasf"},ratings.eq.5,name.eq.kings}'));

输出结果与预期一致:

[ 'gango.cs.{"test","asfasf"}', 'ratings.eq.5', 'name.eq.kings}' ]

正则逻辑解析

  • ,(?=...):正向预查结构,仅当逗号满足后续条件时才执行分割
  • (?:[^"]*"[^"]*")*:匹配0或多组完整的双引号包裹片段(非引号字符+引号+非引号字符+引号),用于计数成对的引号
  • [^"]*$:匹配到字符串末尾的所有非引号字符,确保当前逗号后不存在未闭合的双引号(即剩余引号数为偶数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:18