正则表达式中match和exec方法的区别

1.String包装类型的match方法

语法: str.match(regexp)
str:要进行匹配的字符串. regexp:一个正则表达式(或者由RegExp()构造成的正则表达式)
match的用法主要区分就是,正则表达式是否有全局标示g.

  • 如果g全局标志,那么返回的数组保存的是所有匹配的内容,不包过子匹配。
  • 如果没有g全局标志,那么返回的数组第一个是正确匹配的结果,后面依次是子匹配的结果。
  • 如果没有匹配的内容,那么就会返回null
var string='red';
var match=string.match(/\w/g);
console.log(match);   //[ 'r', 'e', 'd' ]
var match=string.match(/\w/);
console.log(match);   //[ 'r', index: 0, input: 'red' ]

2.RegExp引用类型的exec方法

语法:regexp.exec(str);
regexp:正则表达式(可以直接定义也可以利用RegExp的方式定义) str:要匹配的字串

  • exec与match的关联就是exec等价于不含有g全局标志的match,即返回数组arr[0]为匹配的完整串.其余的为子匹配的字符串。
  • 在设置g全局标志的情况下,每次调用exec都会在字符串中继续查找新匹配项
  • 如果没有匹配的内容,那么就会返回null
var string='red';
var pattern=/\w/g;
var match=pattern.exec(string);
console.log(match);   //[ 'r', index: 0, input: 'red' ]
var match=pattern.exec(string);
console.log(match);   //[ 'e', index: 1, input: 'red' ]

注意:此处必须使用同一个正则表达式RegExp对象,因为如果使用字面量的话就相当于直接调用RegExp构造函数一样,每次都创建新的RegExp实例,因此每次其lastIndex属性相当于被重置了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容