【发布时间】:2019-03-12 11:29:46
【问题描述】:
谁能帮我理解为什么使用 \d* 返回一个包含空字符串的数组,而使用 \d+ 返回 ["100"] (如预期)。我明白为什么 \d+ 有效,但不明白为什么 \d* 不工作。使用 * 是否会导致它返回零长度匹配,这究竟是如何工作的?
var str = 'one to 100';
var regex = /\d*/;
console.log(str.match(regex));
// [""]
【问题讨论】:
-
* 字符匹配
zero或连续出现多个字符,+ 字符相似但匹配一个或多个。 -
从左到右检查字符串是否匹配。由于
\d*可以在索引 0 处匹配一个空字符串,因此它会在该处返回一个匹配项。
标签: javascript regex