我了解在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”,该怎么办?说我要看“World1发生了什么”。所以我写:
> "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#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