2

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

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

这将导致一个数组,但所有空字符串 ["", "", "", "", ""]
我在这里缺少什么?

4

2 回答 2

4

您可以使用match

code.match(/\d+|\D+/g); //=> ["12", "AB", "34", "CD"]
于 2013-07-10T08:01:02.177 回答
3

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

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

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

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

于 2013-07-10T08:02:07.917 回答