gpt4 book ai didi

javascript - 在 JavaScript 中,如何将字符串 "aa,bb\\,cc,dd"以逗号分隔,但前提是前一个字符不是反斜杠?

转载 作者:行者123 更新时间:2023-11-30 14:23:52 25 4
gpt4 key购买 nike

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

aa
bb\\,cc
dd

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

最佳答案

您可以使用此正则表达式进行匹配:

/(?=.)([^,\\]*(?:\\.[^,\\]*)*)(?:,|$)/gm

此正则表达式在匹配下一个位置有逗号或行尾的子字符串时忽略所有转义字符。

RegEx Demo

正则表达式详细信息:

  • (?=.):确保我们不匹配空字符串
  • ([^,\\]*:匹配0个或多个不是,\
  • 的字符
  • (?:\\.[^,\\]*)*):匹配 \ 后跟转义字符,然后是 0 个或多个转义字符不是 \
  • (?:,|$):匹配逗号或行尾

const regex = /(?=.)([^,\\]*(?:\\.[^,\\]*)*)(?:,|$)/gm;
const str = `aa,bb\\,cc,dd`;
let m;

while ((m = regex.exec(str)) !== null) {
console.log(m[1]);
}

//=> [aa, bb\,cc, dd]

关于javascript - 在 JavaScript 中,如何将字符串 "aa,bb\\,cc,dd"以逗号分隔,但前提是前一个字符不是反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52260776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com