首页 > 解决方案 > 在 JavaScript 中,如何用逗号分割字符串“aa,bb\\,cc,dd”,但前提是前一个字符不是反斜杠?

问题描述

我有一个字符串aa,bb\\,cc,dd。我需要用逗号分隔它,但前提是前一个字符不是反斜杠。所以我想要的是:

aa
bb\\,cc
dd

由于JavaScript正则表达式不支持负回溯,我想知道在这种情况下如何解决它。谢谢你。

标签: javascriptregexstringsplitregex-lookarounds

解决方案


如果要使用后向断言按逗号拆分,可以按所有逗号拆分,然后在.reduce()累加数组时强制执行后向断言。

const str = 'aa,bb\\,cc,dd'
const values = str.split(/,/g).reduce((acc, str) => {
  const lastIndex = acc.length - 1

  if (lastIndex >= 0 && acc[lastIndex].endsWith('\\')) {
    acc[lastIndex] += str
  } else {
    acc.push(str)
  }

  return acc
}, [])

console.log(values)


推荐阅读