根据MDN x* : *Matches the preceding item x 0 or more times.*
Regex的星号的使用
本质前述字符应该是完全可选的。字符串会被匹配,无论它们是否存在。那么,为什么说:
var text = "foobar";
var re = /q*/;
var found = text.match(re);
console.log(found); // prints '["", index: 0, input: "foobar"]'
但
var re = /qz*/;
console.log(found); // prints 'null'
两个表达式同样不存在,因此应匹配0次,“‘’”应该是回。
或者:
2.
var re = /fz*/;
console.log(found); // prints '["f", index: 0, input: "foobar"]'
但
var re = /fzq*/;
console.log(found); // prints 'null'
这里发生了什么?从我的理解'fzq'
不存在,所以应该匹配0次,''''应该返回,对吧?如果它以某种方式匹配每个字符而不是整个字符串,则'fzq*'
应返回与'fz'
相同的结果 - 'f'
匹配一次,其余匹配0次。但显然这不是发生了什么事情。
难道有人会对这里发生的事情有所了解吗?