正则模式---g

众所周知正则的g模式是全局模式,当使用g模式的时候,匹配字符串的时候会尽可能多地去匹配(其中是使用了lastIndex这个特性);不使用g模式的时候,就只要匹配到了就立马返回。

下面分别看一下如果同一个字符串采用不同的模式匹配多次会产生怎样的效果。

采用g模式

在这里插入图片描述

不采用g模式

在这里插入图片描述

同样的字符串使用不同的模式得到的结果不一样,究竟是为什么呢?

让我们打个断点看看究竟发生了什么

g模式下的断点

第一次匹配
在这里插入图片描述
第二次匹配

在这里插入图片描述
第三次匹配
在这里插入图片描述
可以发现,lastIndex发生了三次变化,首先是0,然后是1,最后是0.

非g模式下的断点

第一次匹配

第二次匹配
在这里插入图片描述

第三次匹配
在这里插入图片描述
非g模式下lastIndex没有变化过

原来不同模式下有不同结果是由于lastIndex变化造成的。当使用g模式的时候,正则会记录上一次匹配的lastIndex,等到下一次再次匹配的时候会从lastIndex开始,其中如果匹配失败就会从0开始重新匹配。然而非g模式下就不会记录lastIndex。
在这里插入图片描述