在执行JavaScript正则表达式替换时,如何将捕获组$N后跟整数转义?
我知道在JavaScript中,您可以执行正则表达式替换为引用来捕获组,如下所示:在执行JavaScript正则表达式替换时,如何将捕获组$N后跟整数转义?,javascript,regex,replace,Javascript,Regex,Replace,我知道在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
> "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”
如何解决这种歧义?您可以使用String#用回调函数参数替换:
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 + "Hello World 1234567890").replace(
/(\d)Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
"What's up $2$1"
);