javascript exec match 区别

在js中,在查找替换时经常使用到exec 和 match ,

两者的区别是,exec是正则RegExp提供的方法,match是字符串对象string提供的方法,两者返回值都为一个数组对象

exec方法只进行一次匹配,返回的数组对象的第一个为匹配到得字符串,假如正则表达式中存在括号即分组,第二个以后便依次返回分组匹配

 

match 在没有g属性即全局匹配时返回值跟exec没有分组的情况下返回值是一样的,即都返回第一个匹配,返回数组仅仅包含第一个匹配结果,

如果match存在g属性即全局匹配,那么match返回的数组为依次匹配到得结果,如下列子:

 

 

某些情况下exec返回的结果和match返回的结果一样:

如下的代码将弹出"cat2,at":

var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))

其中第一个元素是匹配的字符串"cat2",之后的元素是括号中匹配的"at"。

-------------------------------------------

 

 

 

match函数在满足如下条件下将越俎代庖,实现和exec一样的功能:

1、正则表达式中含有分组(括号)
2、返回唯一的匹配

且看如下的代码:

var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))
alert(str.match(p))

都将弹出消息"cat2,at",是不是觉得很奇怪呢?

 

你可能感兴趣的:(JavaScript)