RegExp.$1, …, RegExp.$9
已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。
注意:所有暴露全域性最後匹配狀態的 RegExp 靜態屬性都已棄用。有關更多資訊,請參閱 已棄用的 RegExp 功能。
RegExp.$1, …, RegExp.$9 靜態訪問器屬性返回括號括起來的子字串匹配。
描述
由於 $1–$9 是 RegExp 的靜態屬性,因此您始終將它們用作 RegExp.$1、RegExp.$2 等,而不是作為您建立的 RegExp 物件的屬性。
每當 RegExp(但不是 RegExp 子類)例項成功匹配時,$1, …, $9 的值就會更新。如果沒有進行匹配,或者最後一次匹配沒有相應的捕獲組,則相應的屬性為空字串。每個屬性的設定訪問器是 undefined,因此您不能直接更改這些屬性。
可能的括號括起來的子字串的數量是無限的,但 RegExp 物件只能容納前九個。您可以透過返回陣列的索引來訪問所有括號括起來的子字串。
$1, …, $9 也可以在 String.prototype.replace() 的替換字串中使用,但這與 RegExp.$n 的舊屬性無關。
示例
在 RegExp.prototype.test() 中使用 $n
以下指令碼使用 RegExp.prototype.test() 方法從通用字串中提取一個數字。
js
const str = "Test 24";
const number = /(\d+)/.test(str) ? RegExp.$1 : "0";
number; // "24"
請注意,在 re.test(str) 呼叫和 RegExp.$n 屬性之間的任何涉及其他正則表示式的操作都可能產生副作用,因此應立即訪問這些特殊屬性,否則結果可能出乎意料。
規範
| 規範 |
|---|
| 舊的 RegExp 功能 # RegExp 建構函式的附加屬性 |
瀏覽器相容性
載入中…