三个例子明白正则婚配内里的最小婚配和全局婚配

看正则的时刻,碰到一些明白上的迷惑,一个是

*?
+?

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也婚配了出来。这也许就是全局婚配的一个运用。

    原文作者:fishenal
    原文地址: https://segmentfault.com/a/1190000000429571
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞