繁体   English   中英

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

[英]Split commas on string with regular expression in JavaScript

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

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

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

字符串输入: "'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 来处理它,但我得到了一个意想不到的结果!

你能给我一个建议吗?

谢谢你的帮助!

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

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

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

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

请参阅正则表达式演示

JS演示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM