Чтобы добавить некоторые детали:
(Как уже было сказано), RegExp.$n
-property (где n
- это одна цифра 1-9) возвращает последний n
-й скобок (захваченный ) подстроку в матче.
Эти свойства были впервые реализованы в JavaScript 1.2 и устарели в JavaScript 1.5 - когда RegExp
подверглись серьезному изменению, и многие из результатов RegExp.prototype.exec(string)
были перемещены из объекта RegExp
в RegExp
] и все свойства .$
(и их версии с полным именем (кроме .multiline
)) «ушли».
Нестандартные1 $1
, $2
, $3
, $4
, $5
, $6
, $7
, $8
, $9
являются статическими и доступными только для чтения свойствами регулярных выражений (которые содержат совпадающие подстроки в скобках) и изменяются всякий раз, когда они успешны сделаны совпадения.
Они не являются свойством отдельного объекта регулярного выражения. Вместо этого вы всегда используете их как RegExp.$1
, ..., RegExp.$9
.
Количество возможных подстрок в скобках неограниченно (конечно), но объект RegExp
может удерживать только последний 9.
1 Нестандартно = не является частью любой текущей спецификации!
Вы можете найти определение и ссылки в следующих разделах ECMA-262 3 Особенности:
String.prototype.match(regexp)
String.prototype.replace(regexp)
RegExp.prototype.exec(string)