我想分割的字符串:
string1, string2, string\,3, string4
我想在每个逗号上拆分上面的字符串,除非使用反斜杠转义逗号。
我无法在JavaScript中使用负面的lookbehind。
我的尝试:
var splits = "string1, string2, string\,3, string4".split("(?<!\\\\),");
没有一个逗号被识别。
潜在的解决方案:经过研究,我偶然发现this问题。但是,我不太了解解决方法,以便将上述代码更改为替换用例。
答案 0 :(得分:3)
您可以使用
s.match(/(?:[^,\\]|\\.)+/g)
请参阅regex demo。它将匹配除逗号和反斜杠之外的1个或多个字符,或者使用文字反斜杠转义的任何字符。
请注意,字符串文字应该有一个双反斜杠来定义文字反斜杠。
var splits = "string1, string2, string\\,3, string4".match(/(?:[^,\\]|\\.)+/g);
console.log(splits);
答案 1 :(得分:0)
根据输入示例中的分隔符,无需识别转义的逗号。分隔符是“逗号空间”,所以只需使用它。 (或者更新您的问题以显示不以这种方式构建的输入。)
如果要保留逗号和值之间的空格,请使用:
var splits = "string1, string2, string\\,3, string4".split(/,(?= )/);
console.log(splits);
如果要删除前导空格,请使用:
var splits = "string1, string2, string\\,3, string4".split(/, /);
console.log(splits);