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属性相当于被重置了。