RegExp.$1, …, RegExp.$9
已弃用:此功能不再推荐。尽管一些浏览器可能仍然支持它,但它可能已经从相关的 Web 标准中删除,或者正在被删除,或者可能只为了兼容性而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表 来指导您的决定。请注意,此功能可能随时停止工作。
注意:所有公开全局最后匹配状态的RegExp
静态属性都已弃用。有关更多信息,请参阅已弃用的 RegExp 功能。
RegExp.$1, …, RegExp.$9
静态访问器属性返回带括号的子字符串匹配项。
描述
由于$1
–$9
是RegExp
的静态属性,因此您始终将它们用作RegExp.$1
、RegExp.$2
等,而不是作为您创建的RegExp
对象的属性。
$1, …, $9
的值会在每次RegExp
(但不是RegExp
子类)实例成功匹配时更新。如果未进行任何匹配,或者上次匹配不包含相应的捕获组,则相应的属性为空字符串。每个属性的设置访问器都是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 功能 # additional-properties-of-the-regexp-constructor |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。