1

也许我错过了一些东西,但是这个正则表达式有什么问题?

var str = "lorem ipsum 12345 dolor";
var x = /\d+/.exec(str);
var y = /\d*/.exec(str);
console.log(x); // will print 12345
console.log(y); // will print "" but why ? 

你能解释一下为什么/\d*/.exec(str);返回一个空字符串而不是“12345”。 *表示零个或多个匹配。

4

2 回答 2

7

\d*匹配一行中的零个或多个数字。当您exec在正则表达式上运行时,它从输入的开头开始并返回它找到的给定模式的第一个实例。

那么\d*该字符串中的第一个实例在哪里?嗯,它是字符串中第一个后面有零个或多个数字的位置。但它们后面都有零个或多个数字!要么有数字,要么没有,但无论哪种方式都匹配。所以第一个实例\d*只是从字符串的第一个位置开始的零长度子字符串。

于 2011-07-28T20:31:42.190 回答
1

*匹配零个或多个。也许我错了,但这不匹配从“lorem”开始的零位,因此是空字符串吗?

于 2011-07-28T20:23:12.630 回答