使用Regexp匹配来访问数组/对象

时间:2017-07-23 21:42:45

标签: javascript regex

我有:

x = ["12/12/12", "Jul-23-2017"]
sum(1 for word in x for c in word if c.isdigit())  # 12
sum(1 for word in x for c in word if c.isalpha())  # 3

想法是:

 window.page="home";
 document.getElementsByTagName("title")[0].innerHTML=
      "hello.com | $page".replace(/\$([^\s]*)/g,window["$1"]);

但我反而得到:

 <title>hello.com | home</title>

当我执行以下操作时:

 <title>hello.com | undefined</title>

我明白了:

 document.getElementsByTagName("title")[0].innerHTML=
      "hello.com | $page".replace(/\$([^\s]*)/g,"$1");

这是因为该函数将 <title>hello.com | page</title> 作为参数来映射其输出。我想知道是否有办法使用捕获组来访问数组/对象?

1 个答案:

答案 0 :(得分:1)

您不能使用只能用作字符串替换模式的一部分作为参数的反向引用。您需要使用replace callback

使用

.replace(/\$(\S*)/g, function($0,$1) {return window[$1];})

请注意\S(非空白)比[^\s](不是空格)短。

function($0,$1)中,$0代表整场比赛,而$1代表第1组内容。