[英]regex split groups of digits and non-digits not working in Javascript
我有一个简单的正则表达式模式,该模式应将数字和非数字组分开。 因此,当我使用此( 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);
这将导致一个数组,但所有空字符串[“”,“”,“”,“”,“”]
我在这里想念什么?
JavaScript的regex split()
不包含分隔符(与regex匹配的东西),仅包含分隔符之间的内容。 这就是为什么您会得到5个空字符串的原因-因为您的正则表达式有4个匹配项,而这4个匹配项周围没有其他字符。
"" "12" "" "AB" "" "34" "" "CD" ""
^ ^ ^ ^
| | | |
+-------+-------+-------+--- regex (separator) matches
相反,由于您实际上想要的是与正则表达式匹配的东西,而不是介于两者之间的东西,因此您应该只使用.match()
而不是.split()
,这将带回您所有的匹配项。
您可以使用match
:
code.match(/\d+|\D+/g); //=> ["12", "AB", "34", "CD"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.