不是很清楚?

不是很清楚?

 <script type="text/javascript">

        var str = "baaab"

        var pattren = /ba+?b/

            // var pattren = /a*/


        document.write(pattren.exec(str))

    </script>

//*是不存在贪婪匹配吗?为什么不匹配后面的a了

//a+?b是可以看作a+  b?吗  ba+? 就会变成非贪婪

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,问题解答如下:

1、‘把a尽量多取默认贪婪’指的是前面的a还是结尾的a。因为a后面有b匹配,所以尽管用了非贪婪,中间的3个a也会全部匹配出来。后面的b用了非贪婪,结尾的a可有可无,所以匹配了一个b,结尾的a不匹配。

2、理解没有问题。

祝学习愉快!

好帮手慕星星 2020-09-19 14:47:06

同学你好,问题解答如下:

1、*可以匹配零次,如果从第一个字符开始,没有匹配到结果,就不会往下面匹配了。如果匹配到了(还是连续的),才会多次匹配。例如

http://img1.sycdn.imooc.com/climg/5f65a7a30952e5bf04040094.jpg

http://img1.sycdn.imooc.com/climg/5f65a7a709c3cefa01080044.jpg

2、a+?b不可以看作a+ b?。因为+?是对于a字符来说的,不可以放在b字符上。

如果想要体现非贪婪的作用,可以这样写,只匹配a

http://img1.sycdn.imooc.com/climg/5f65a8de0914394a02860107.jpg

3、+?一起使用表示非贪婪,所以a后面只匹配到1个b 。

自己再理解下,祝学习愉快~

提问者 慕哥5103152 2020-09-19 13:09:30

<script type="text/javascript">

        var str = "baaabbbba"

        var pattren = /ba+?b+?a?/

            // var pattren = /a*/


        document.write(pattren.exec(str))

    </script>

//这里?也不存在贪婪匹配吗?

//加?就只匹配到一个b?

  • 提问者 慕哥5103152 #1
    <script type="text/javascript"> var str = "baaabbbba" // var pattren = /ba+?b+?a?/ //baaab 这里是因为有a可有一次或者零次所以才会只取一个吗,不应该是把a尽量多取默认贪婪吗? var pattren = /ba+?b+?a/ //baaabbbba 这里是因为有a所以才会连续取吗 document.write(pattren.exec(str)) </script>
    2020-09-19 18:08:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师