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". *表示零个或多个匹配项.
\d*匹配一行中的零个或多个数字.当你运行exec一个正则表达式时,它从输入的开头开始,并返回它找到的给定模式的第一个实例.
那么\d*该字符串中的第一个实例在哪里?好吧,它是字符串中第一个位置后面有零个或多个数字的位置.但是,他们都拥有在他们之后零个或多个数字!那里有数字,或者没有数字,但无论哪种方式匹配.所以第一个实例\d*只是从字符串中的第一个位置开始的零长度子字符串.