1. If the two methods match successfully, an array is returned. If the match fails, null is returned.
2. When the global attribute of RegExp is false, the returned arrays of the two methods are the same.
The 0th elements in the array are the first matching string of the entire pattern, and the next element is the child matching string in the First Matching of pattern.
In addition, the array has two additional attributes: index and input. index is the starting position of the matching string, and input is the entire input string.
At this time, the lastIndex attribute of RegExp is always 0.
Demo:Copy codeThe Code is as follows: var s = 'this is a string ';
Var p =/\ B \ w * (I) s \ B /;
Var rm = s. match (p );
Var re = p.exe c (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 );
The result is displayed on the firefox console ):Copy codeThe Code is as follows: 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. When the global attribute of RegExp is true, the returned array is different.
The array returned by the match method contains all matching strings, without any child matching strings or additional attributes. The lastIndex attribute is invalid.
The array format returned by the exec method is the same as that returned when the global value is false, but the lastIndex attribute of RegExp is valid at this time. The matching starts from the character indicated by lastIndex, after the method is executed, lastIndex is set to the next character of the matched string. Therefore, when the exec method is executed cyclically, the entire string is matched in sequence until the string returns null, set lastIndex to 0.
Demo:Copy codeThe Code is as follows: var s = 'this is a string ';
Var p =/\ B \ w * (I) s \ B/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.exe c (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 );
Result:Copy codeThe Code is as follows: 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
To sum up:
1. When there is no g identifier, the effect of the match and exec methods is the same; when there is a g identifier, the exec method can provide the most complete matching results.
2. here, by the way, we will mention RegExp. the test () method is a simplified version of the exec method. If a matching result is returned, true is returned. If no matching result is returned, false is returned. The execution process is the same as exec. Equivalent to (p.exe c (s )! = Null ).
3. The lastIndex attribute of RegExp has a g identifier and is valid in the exec and test methods. Otherwise, it is invalid.