加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

三个例子理解正则匹配里面的最小匹配和全局匹配

发布时间:2020-12-14 01:54:12 所属栏目:百科 来源:网络整理
导读:看正则的时候,遇到一些理解上的疑惑,一个是 *?+? MDN上的解释为 Matches like * and + from above,however the match is the smallest possible match. 如*,+一样的匹配前面项,匹配是最小可能。 另外一个疑惑是参数g,这个的解释是全局模式,但全局模式究

看正则的时候,遇到一些理解上的疑惑,一个是

*?
+?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读