1 、match 和 exec 共同点
1、当不使用全局匹配g的时候,两只都返回相同的格式 。
检索字符串中指定的值。返回找到的值,并确定其位置。
var str = 'shanghai nihao shanghainihao'
var patt = /nihao/
str.match(patt)
str.match(patt)
2、match 和 exec 区别
1、它们最大的本质区别就是 match是字符串的方法 exec是正则对象的方法
2、在使用全局匹配的时候
match 返回的是一个数组且会忽略子表达式的捕获项
exec 则是 忽略全局匹配。
match
exec
3、应用上的区别
exec适合用于循环匹配 虽然全局匹配和非全局的返回值一样,但使用exec循环时,必须要加修饰符g
match 适用于将所有匹配项找出来,得到一个匹配项的数组 。(前提是全局匹配g)
3、exec 的特点
它是RegExp对象的一个方法
如果字符串中有匹配的值返回该匹配值,否则返回 null。
每次使用exec后,对应的正在实例有个属性 lastIndex 会变成 每次匹配要检索的字符串的开始匹配的起始索引位置的值,当下次执行的时候会从上次所匹配的位置继续查找匹配。相应的lastIndex也会变化。当最后没有可匹配的项时会返回一个null,相应的 lastIndex也会重置为0