繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM