看正则的时刻,碰到一些明白上的迷惑,一个是
*?
+?
MDN上的诠释为
Matches like * and + from above, however the match is the smallest possible match.
如*,+一样的婚配前面项,婚配是最小能够。
别的一个迷惑是参数g,这个的诠释是全局形式,但全局形式究竟是什么意思呢,最小婚配又是什么意思呢?
先从最小婚配的例子最先看一下:
var re = /".*?"/;
'"foo""bar"'.match(re)
//return "foo"
MDN对最小婚配运用的是如上的例子,上例假如不必?最小婚配,则婚配不到”foo”,我们来试一下
var re = /".*"/;
'"foo""bar"'.match(re)
//return "foo""bar"
可见,假如不运用最小婚配,婚配一向举行到了字符串末了一个”,前面的”被忽视掉,这类形式成为贪欲形式,就是有若干婚配若干,当*也许+ 背面带?,则采纳最小婚配,当查找到第一次胜利的婚配,就将婚配结果返回。
那末,全局婚配在这个例子里会发生什么样的结果呢?
var re = /".*?"/g;
'"foo""bar"'.match(re)
//return [""foo"", ""bar""]
最小婚配下原本只能婚配出第一个foo,而加上全局婚配,婚配会继续举行,将背面的bar也婚配了出来。这也许就是全局婚配的一个运用。