RegExp对象匹配提取方法—exec()

阅读: 3981    发布时间: 2018-01-30 11:14:48

RegExp对象用来匹配提取的方法——exec()

  • 接受一个参数:源字符串

  • 返回值:返回一个数组,在没有匹配的情况下返回null

var patt=/\d+/g
var str="aaa123BBB456"
console.log(patt.exec(str))
console.log(patt.exec(str))
console.log(patt.exec(str))

返回结果如下图

QQ20180130-110905@2x.png


可以看出,每次调用,只返回第一个匹配的数据,需要多次循环调用,才能获取 所有匹配的数据,每次匹配到的值为一个数组,数组结果数组包含两个额外属性,index表示匹配项在字符串中的位置,input表示源字符串,结果数组matches第一项即matches[0]表示匹配整个正则表达式匹配的字符串,matches[n]表示于模式中第n个捕获组匹配的字符串。


要注意的是,第一,exec()永远只返回一个匹配项(指匹配整个正则的),第二,如果设置了g修饰符,每次调用exec()会在字符串中继续查找新匹配项,不设置g修饰符,对一个字符串每次调用exec()永远只返回第一个匹配项。所以如果要匹配一个字符串中的所有需要匹配的地方,那么可以设置g修饰符,然后通过循环不断调用exec方法。

不带修饰符“g”的示例

var patt=/\d+/
var str="aaa123BBB456"
console.log(patt.exec(str))
console.log(patt.exec(str))
console.log(patt.exec(str))

QQ20180130-111339@2x.png



-END-