数组的第0个元素是整个pattern的第一个匹配字符串,接下来的元素是pattern第一个匹配中的子匹配字符串。 此外,数组还有index和input两个额外属性,index是匹配字符串的起始位置,input是整个输入字符串。 此时,RegExp的lastIndex属性一直是0。 demo: 复制代码 代码如下: var s = "this is a string"; var p = /w*(i)s/; var rm = s.match(p); var re = p.exec(s); console.log("match_array: " + JSON.stringify(rm)); console.log("match_array_index: " + rm.index); console.log("match_array_input: " + rm.input); console.log("----------------------------"); console.log("exec_array: " + JSON.stringify(re)); console.log("exec_array_index: " + re.index); console.log("exec_array_input: " + re.input);
显示结果为(firefox控制台): 复制代码 代码如下: match_array: ["this","i"] match_array_index: 0 match_array_input: this is a string ---------------------------- exec_array: ["this","i"] exec_array_index: 0 exec_array_input: this is a string
3. 当RegExp的global属性为true时,返回的数组是不同的。 match方法返回的数组包含着所有匹配字符串,没有子匹配字符串和额外属性。此时,lastIndex属性无效。 exec方法返回的数组格式与global为false时一样,只是此时RegExp的lastIndex属性有效,匹配是从lastIndex所指示的字符开始的,并且方法执行后会将lastIndex置为本次匹配字符串的下一个字符处,所以循环执行exec方法时会依次匹配整个字符串,直到字符串最后返回null,并将lastIndex置0。 demo: 复制代码 代码如下: var s = "this is a string"; var p = /w*(i)s/g; var rm = s.match(p); var re; console.log("match_array: " + JSON.stringify(rm)); console.log("match_array_index: " + rm.index); console.log("match_array_input: " + rm.input); while(re = p.exec(s)){ console.log("----------------------------"); console.log("exec_array: " + JSON.stringify(re)); console.log("exec_array_index: " + re.index); console.log("exec_array_input: " + re.input); console.log("regexp_lastIndex: " + p.lastIndex); } console.log("----------------------------"); console.log("exec_array: " + re); console.log("regexp_lastIndex: " + p.lastIndex);
结果: 复制代码 代码如下: match_array: ["this","is"] match_array_index: undefined match_array_input: undefined ---------------------------- exec_array: ["this","i"] exec_array_index: 0 exec_array_input: this is a string regexp_lastIndex: 4 ---------------------------- exec_array: ["is","i"] exec_array_index: 5 exec_array_input: this is a string regexp_lastIndex: 7 ---------------------------- exec_array: null regexp_lastIndex: 0