javascript - JS关于正则的非贪婪模式

查看:197
本文介绍了javascript - JS关于正则的非贪婪模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如题,既然正则的非贪婪模式是匹配少的字符,如下代码:

<script type="text/javascript">
            var a="fooood";
            var d=/(fo+?)/g;
            console.log(a.match(d));
        </script>

这样的话是说明o后面最少匹配,所以出现就会匹配fo,

疑问是下面的代码:

<script type="text/javascript">
            var a="aabab";
            var d=/(a*?b)/g;
            console.log(a.match(d));
        </script>

既然a是最少匹配,那么不应该匹配的是ab,ab么,为什么最后结果是aab;ab,希望帮忙解答一下,我理解上的错误,谢谢

解决方案

为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。
——摘自《正则表达式30分钟入门教程》

这篇关于javascript - JS关于正则的非贪婪模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆