据我所知,在JavaScript中,您可以执行正则表达式替换,并引用捕获组,如下所示:
> "Hello World 1234567890".replace(
/Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
"What's up $1");
"What's up World"
这一切都很好。但是,如果我想引用第1组然后立即跟随“1”,该怎么办?说我看什么“世界上有什么1”。所以我写道:
> "Hello World 1234567890".replace(
/Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
"What's up $11");
"What's up 0"
当然,在这种情况下,它引用的是第11组,即“0”,而不是第1组,后跟“1”。
我怎样才能解决这种歧义?
答案 0 :(得分:5)
您可以将String#replace
与回调函数参数一起使用:
str = "Hello World 1234567890";
repl = str.replace(/Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/, function(r, g) {
return "What's up " + g + '1';});
//=> What's up World1
答案 1 :(得分:1)
不要那样做^^:
(1 + "Hello World 1234567890").replace(
/(\d)Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
"What's up $2$1"
);