正面分裂与负面观察

时间:2017-06-06 15:19:27

标签: javascript regex

我想分割的字符串:

string1, string2, string\,3, string4

我想在每个逗号上拆分上面的字符串,除非使用反斜杠转义逗号。

我无法在JavaScript中使用负面的lookbehind。

我的尝试:

var splits = "string1, string2, string\,3, string4".split("(?<!\\\\),");

没有一个逗号被识别。

潜在的解决方案:经过研究,我偶然发现this问题。但是,我不太了解解决方法,以便将上述代码更改为替换用例。

2 个答案:

答案 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);