JavaScript正则表达式中str.match(pattern)与pattern.exec(str)的区别

admin 2020-05-10

JavaScript exec() 方法

定义和用法

exec() 方法用于检索字符串中的正则表达式的匹配。

如果字符串中有匹配的值返回该匹配值,否则返回 null。

语法

RegExpObject.exec(string)

JavaScript match() 方法

定义和用法

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

语法

string.match(regexp)

regexp:必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。

注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

正则表达式中str.match(pattern)与pattern.exec(str)在全局模式中的区别:

非全局模式下,两种方法返回结果相同,我们以match为例。

我们首先来看代码

var str="cat,bat,sat";

var pattern=/.at/;

var matches=str.match(pattern);

console.dir(matches);

返回结果:

全局模式下:

1.match

代码如下

var str="cat,bat,sat";

var pattern=/.at/g;

var matches=str.match(pattern);

console.dir(matches);

结果如下:

可以注意到,返回结果把整个字符串中符合正则的结果都列出来放在了结果数据里,而结果数组中也没有了index属性

2.exec

代码如下

var str="cat,bat,sat";

var pattern=/.at/;

var matches=pattern.exec(str);

console.dir(matches);

结果如下:

故:exec一次只会匹配符合条件的一项,每次调用则会在字符串中继续寻找

总结

在全局模式下,match会一下返回所有匹配项;而exec每次只返回一项,下次调用接着向后匹配。

下一篇:JavaScript中String 和 new String 的区别
上一篇:JavaScript中sortNumber函数如何进行数组的排序
相关文章
评论
返回顶部小火箭