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))
返回结果如下图
可以看出,每次调用,只返回第一个匹配的数据,需要多次循环调用,才能获取 所有匹配的数据,每次匹配到的值为一个数组,数组结果数组包含两个额外属性,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))