RegExp.$ 1做什么

Gra*_*ham 17 javascript regex

我在JScript中遇到过一段代码:

RegExp.$1
Run Code Online (Sandbox Code Playgroud)

有人知道它的作用吗?

如果我自己输出它,我甚至没有得到任何错误.

我在http://www.w3schools.com/jsref/jsref_obj_regexp.asp上找不到任何参考资料.

在这段代码之前有一个正则表达式搜索,我怀疑它与它有关:

.search(/^__product\[(.+)\]$/)
Run Code Online (Sandbox Code Playgroud)

Roc*_*mat 20

文字表达式RegExp.$1将为您提供上一个正则表达式运行的第一个捕获组的值.无论那个正则表达式是什么.

例如:

var match = /_(.*)_/.exec('_test_');

var newMatch = '123-abc'.match(/(\d*)-(\w*)/);
var num = RegExp.$1; // '123';
Run Code Online (Sandbox Code Playgroud)

RegExp.$1 是全局可用的,因此可以从页面中的任何位置访问它,无论正则表达式本身在何处运行.

我在看到这个问题之前从未见过这种语法,我不建议使用它,因为我找不到它的文档.此外,在您的页面上运行的任何正则表达式,无论在何处,都将修改此属性.如果你想获得捕获组,我会使用从String.match或返回的数组RegExp.exec.

编辑:我发现了一些关于此的文档:http://msdn.microsoft.com/en-us/library/ie/24th3sah(v = vs.94).aspx

编辑2:我发现了一些关于此的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties

RegExp.$1已弃用.这意味着未来的浏览器可能会删除此"功能",因此我建议不要使用它.