正则表达式 match和exec

1 、match 和 exec 共同点

1、当不使用全局匹配g的时候,两只都返回相同的格式 。
检索字符串中指定的值。返回找到的值,并确定其位置。

var str = 'shanghai nihao shanghainihao'
var patt = /nihao/
str.match(patt)
str.match(patt)

正则表达式 match和exec_第1张图片
正则表达式 match和exec_第2张图片

2、match 和 exec 区别

1、它们最大的本质区别就是 match是字符串的方法 exec是正则对象的方法
2、在使用全局匹配的时候

 match 返回的是一个数组且会忽略子表达式的捕获项
 exec 则是 忽略全局匹配。

match
在这里插入图片描述
exec
正则表达式 match和exec_第3张图片
3、应用上的区别

exec适合用于循环匹配 虽然全局匹配和非全局的返回值一样,但使用exec循环时,必须要加修饰符g


match 适用于将所有匹配项找出来,得到一个匹配项的数组 。(前提是全局匹配g)

3、exec 的特点

它是RegExp对象的一个方法
如果字符串中有匹配的值返回该匹配值,否则返回 null。

每次使用exec后,对应的正在实例有个属性 lastIndex 会变成 每次匹配要检索的字符串的开始匹配的起始索引位置的值,当下次执行的时候会从上次所匹配的位置继续查找匹配。相应的lastIndex也会变化。当最后没有可匹配的项时会返回一个null,相应的 lastIndex也会重置为0

你可能感兴趣的:(正则表达式)