我有:
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>
作为参数来映射其输出。我想知道是否有办法使用捕获组来访问数组/对象?
答案 0 :(得分:1)
您不能使用只能用作字符串替换模式的一部分作为参数的反向引用。您需要使用replace callback。
使用
.replace(/\$(\S*)/g, function($0,$1) {return window[$1];})
请注意\S
(非空白)比[^\s]
(不是空格)短。
在function($0,$1)
中,$0
代表整场比赛,而$1
代表第1组内容。