在JavaScript中使用正则表达式在字符串上拆分逗号

时间:2017-10-16 14:24:01

标签: javascript regex split

我是正则表达的初学者。我需要你的建议。

我想用逗号分隔一个字符串,这些逗号位于带有正则表达式的几个单引号之外。

正则表达式模式:,(?=([^']*'[^']*')*[^']*$)

字符串输入:"'2017-10-16 10:44:43.0000000', 'Abc,'', de', '0', None"

预期输出:["'2017-10-16 10:44:43.0000000'", " 'Abc,'', de'", " '0'", " None"]有一个包含4个元素的数组。

目前,我正在使用正则表达式的split方法,并且它在JAVA上运行良好。 现在我必须通过JavaScript处理它,但我得到了意想不到的结果!

你能给我一个建议吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您的正则表达式包含捕获([^']*'[^']*')

如果在正则表达式中使用捕获组,并且在 Java 中传递给String#split(),则捕获组不会添加到生成的拆分字符串数组中。在 JavaScript 中,String#split()将所有捕获的子字符串添加到结果数组中。

要使两个引擎之间的模式兼容,只需将捕获组转为非捕获组,

,(?=(?:[^']*'[^']*')*[^']*$)
    ^^^            ^

请参阅regex demo

JS演示:



var rx = /,(?=(?:[^']*'[^']*')*[^']*$)/;
var s = "'2017-10-16 10:44:43.0000000', 'Abc,'', de', '0', None";
console.log(s.split(rx));