The legacy RegExp $1, $2, $3, $4, $5, $6, $7, $8, $9 properties are static and read-only properties of regular expressions that contain parenthesized substring matches.
The $1, ..., $9 properties are static, they are not a property of an individual regular expression object. Instead, you always use them as
The values of these properties are read-only and modified whenever successful matches are made.
The number of possible parenthesized substrings is unlimited, but the
RegExp object can only hold the first nine. You can access all parenthesized substrings through the returned array's indexes.
These properties can be used in the replacement text for the
String.replace method. When used this way, do not prepend them with
RegExp. The example below illustrates this. When parentheses are not included in the regular expression, the script interprets
$n's literally (where
n is a positive integer).
Using $n with String.replace
The following script uses the
replace() method of the
String instance to match a name in the format first last and output it in the format last, first. In the replacement text, the script uses
$2 to indicate the results of the corresponding matching parentheses in the regular expression pattern.
var re = /(\w+)\s(\w+)/; var str = 'John Smith'; str.replace(re, '$2, $1'); // "Smith, John" RegExp.$1; // "John" RegExp.$2; // "Smith"
Using $n with RegExp.test
var str = 'Test 24'; var number = /(\d+)/.test(str) ? RegExp.$1 : '0'; number; // "24"
Please note that any operation involving the usage of other regular expressions between a
re.test(str) call and the
RegExp.$n property, might have side effects, so that accessing these special properties should be done instantly, otherwise the result might be unexpected.
|Chrome Full support 1||Edge Full support 12||Firefox Full support 1||IE Full support 4||Opera Full support 5||Safari Full support 1||WebView Android Full support 1||Chrome Android Full support 18||Firefox Android Full support 4||Opera Android Full support 10.1||Safari iOS Full support 1||Samsung Internet Android Full support 1.0||nodejs Full support Yes|
- Full support
- Full support