regex分割在Javascript中不起作用的数字和非数字组

regex split groups of digits and non-digits not working in Javascript

本文关键字:数字 不起作用 分割 Javascript regex      更新时间:2023-09-26

我有一个简单的正则表达式模式,它应该划分数字组和非数字组。所以像12AB34CD这样的字符串应该变成像["12","AB","34","CD"]这样的数组当我使用这个(http://gskinner.com/RegExr/)测试表达式的工具,它运行良好,但在Javascript 中似乎不起作用

var code = "12AB34CD";
var regex =  new RegExp(/'d+|'D+/g);
var codeArray = code.split(regex);
console.log(codeArray);

这将导致一个数组,但所有字符串都为空[","
我在这里错过了什么?

您可以使用match:

code.match(/'d+|'D+/g); //=> ["12", "AB", "34", "CD"]

JavaScript的正则表达式split()不包括分隔符(与正则表达式匹配的东西),只包括分隔符之间的东西。这就是为什么您得到5个空字符串的原因,因为您的regex有4个匹配项,而在这4个匹配中没有其他字符。

"" "12" "" "AB" "" "34" "" "CD" ""
    ^       ^       ^       ^
    |       |       |       |
    +-------+-------+-------+--- regex (separator) matches

相反,由于您实际上想要与regex匹配的东西,而不是介于两者之间的东西,因此您应该只使用.match()而不是.split(),这将返回所有匹配项。