使用正则表达式时获取空匹配\ d *

时间:2010-03-03 19:58:26

标签: javascript regex

string = 'Hello _1234_ world _4567_';
string.match(/(\d*)/gi);
//,,,,,,,1234,,,,,,,,,,4567,,

如果我改变正则表达式以获得\ d +,那么我得到正确的值:1234和4567.为什么在第一种情况下我得到所有那些空的匹配。

2 个答案:

答案 0 :(得分:2)

*表示0或更多。 +表示1个或更多。

\d*匹配每个字符之间的空格,因为这是空字符串,即零数字。当您使用\d+时,空字符串不再是有效匹配,因此您不会获得这些额外匹配。

答案 1 :(得分:1)

因为您有(\ d *)表示每次有0位或更多位数时捕获,这意味着 每个角色(甚至是一些不可见的字符,如换行符)都匹配。

使用\ d +,您说的是匹配,其中有1位或更多位数。