老师有点疑问?

来源:3-29 选择练习

猴野大表哥

2019-06-19 10:47:39

你在https://class.imooc.com/course/qadetail/123026这个答案里说,

分组匹配的先后顺序就是小括号中的字母的顺序, 

exec方法的匹配是第一位字符开始匹配, 需要到满足条件的时候输出匹配内容,下一次匹配从上一次结束的位置开始匹配。简单理解就是, exec方法一直往后匹配,不会重头开始重新匹配。这就是为什么输出是上图所示的结果。

然后我把代码换成

var str=“ababbac”;

var pattern=/(ab)+/;

输出的还是["abc","ab"],按照你说的接着往下匹配那不是匹配不到ab吗

写回答

1回答

好帮手慕慕子

2019-06-19

同学你好,老师这里可能描述的不严谨, 给同学造成了困扰, exec对同一个字符串进行检测, 下一次匹配是从上一次匹配结束的位置开始匹配, 这里老师给同学举个简单的例子

http://img.mukewang.com/climg/5d09b2b200018f3e05360223.jpg

上面这段代码, 打印结果如下图所示, 可以看出第一次使用exec方法匹配"abab"遇到ba字符不符合条件结束此时匹配, 第二次使用exec再次匹配这个字符串, 是从ba开始匹配的, 所以第二次输出的结果是最后的“ababab”,另, 这里每个数组中的第二个“ab”表示子组里面的内容, 也就是()小括号里面的内容。

http://img.mukewang.com/climg/5d09b2c00001f2f309290096.jpg

同学可以试着理解一下, 如果还有疑惑,可以再次提问, 我们会继续为你解答的

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~



1

0 学习 · 14456 问题

查看课程