var s ='hello123456数组';
var result1 = s.match(/\d/);
console.log(result1);//["1", index: 5, input: "hello123456数组", groups: undefined]
var result2 = /\d/.exec(s);
console.log(result2);//结果同string.match(reg)
复制代码
var s='abc,bbc,cbc,dbc';
var result=/(\w)bc/.exec(s);
console.log(result);
var result2=s.match(/(\w)bc/);
console.log(result2);
//["abc", "a", index: 0, input: "abc,bbc,cbc,dbc", groups: undefined],返回长度为2的数组,第一项时匹配项,第二项是子表达式捕获项,包含属性,index和input,index是匹配项开始的下标
var str = 'abcd';
var re = /(a)(b)(c)/;
console.log( str.match(re) ) //["abc", "a", "b", "c", index: 0, input: "abcd", groups: undefined]
console.log(re.exec(str));//["abc", "a", "b", "c", index: 0, input: "abcd", groups: undefined]
复制代码
var s = 'abc,bbc,cbc,dbc';
var result = /\wbc/g.exec(s);
console.log(result); //["abc", index: 0, input: "abc,bbc,cbc,dbc", groups: undefined]
var result2 = s.match(/\wbc/g);
console.log(result2); //['abc','bbc','cbc','dbc']
复制代码
var s = 'abc,bbc,cbc,dbc';
var result = /(\w)bc/g.exec(s);
console.log(result); //['abc','a'],index为0,input为'abc,bbc,cbc,dbc'
var result2 = s.match(/(\w)bc/g);
console.log(result2); //['abc','bbc','cbc','dbc']
复制代码
var s = 'abc,bbc,cbc,dbc';
var reg = /(\w)bc/g;
var resultArr = [];
//循环匹配时,要先将正则表达式定义好,否则每次都是一个新的正则对象,影响lastIndex的变化
//必定要加修饰符g,lastIndex是匹配项后面的下标,是下一次匹配的开始下标
//当 exec() 再也找不到匹配的文本时,它将返回 null,并把lastIndex 属性重置为 0
while (result = reg.exec(s)) {
console.log("lastIndex: " + reg.lastIndex);
// lastIndex: 3
// lastIndex: 7
// lastIndex: 11
// lastIndex: 15
resultArr.push(result);
}
console.log(resultArr)
// [Array(2), Array(2), Array(2), Array(2)]
// ["abc", "a", index: 0, input: "abc,bbc,cbc,dbc", groups: undefined]
// ["bbc", "b", index: 4, input: "abc,bbc,cbc,dbc", groups: undefined]
// ["cbc", "c", index: 8, input: "abc,bbc,cbc,dbc", groups: undefined]
// ["dbc", "d", index: 12, input: "abc,bbc,cbc,dbc", groups: undefined]
复制代码
参考资料:1. lastIndex的理解正则表达式