我有一个简单的正则表达式模式,它应该分割数字和非数字组。 所以像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);
这会产生一个数组但是所有空字符串[“”,“”,“”,“”,“”] 我在这里缺少什么?
答案 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"]