正则表达式拆分数组和非数字组在Javascript中不起作用

时间:2013-07-10 07:58:31

标签: javascript regex

我有一个简单的正则表达式模式,它应该分割数字和非数字组。 所以像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);

这会产生一个数组但是所有空字符串[“”,“”,“”,“”,“”] 我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

JavaScript的正则表达式split()不包括分隔符(与正则表达式匹配的东西) - 只包含分隔符之间的内容。这就是为什么你得到5个空字符串 - 因为你的正则表达式有4个匹配,并且这4个匹配项中没有其他字符。

"" "12" "" "AB" "" "34" "" "CD" ""

    ^       ^       ^       ^
    |       |       |       |
    +-------+-------+-------+--- regex (separator) matches

相反,由于您实际上想要的是与正则表达式匹配的内容,而不是介于两者之间的内容,因此您应该使用.match()代替.split(),这样可以返回所有匹配项。

答案 1 :(得分:2)

您可以使用match

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