老师有点疑问?
来源: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对同一个字符串进行检测, 下一次匹配是从上一次匹配结束的位置开始匹配, 这里老师给同学举个简单的例子
上面这段代码, 打印结果如下图所示, 可以看出第一次使用exec方法匹配"abab"遇到ba字符不符合条件结束此时匹配, 第二次使用exec再次匹配这个字符串, 是从ba开始匹配的, 所以第二次输出的结果是最后的“ababab”,另, 这里每个数组中的第二个“ab”表示子组里面的内容, 也就是()小括号里面的内容。
同学可以试着理解一下, 如果还有疑惑,可以再次提问, 我们会继续为你解答的
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
相似问题