string = 'Hello _1234_ world _4567_';
string.match(/(\d*)/gi);
//,,,,,,,1234,,,,,,,,,,4567,,
如果我改变正则表达式以获得\ d +,那么我得到正确的值:1234和4567.为什么在第一种情况下我得到所有那些空的匹配。
答案 0 :(得分:2)
*
表示0或更多。 +
表示1个或更多。
\d*
匹配每个字符之间的空格,因为这是空字符串,即零数字。当您使用\d+
时,空字符串不再是有效匹配,因此您不会获得这些额外匹配。
答案 1 :(得分:1)
因为您有(\ d *)表示每次有0位或更多位数时捕获,这意味着 每个角色(甚至是一些不可见的字符,如换行符)都匹配。
使用\ d +,您说的是匹配,其中有1位或更多位数。