正则表达式星符号

ala*_*gar 1 regex regular-language

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

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 ? 
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*gan 7

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

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