javascript regex look behind 替换一个字符
javascript regex look behind to replace a character
我有一长串代码,看起来像
hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ…
我需要做一个替换。一个十六进制字符被重复使用 Ȁ
,它前面总是有一个 ^
。我需要更改每个 ^Ȁ
之前出现的数字,将这些数字减 1。因此最终结果将是...
hs1^Ȁ_^HELLO_x_fs1^Ȁ_^WORLD_x_gn2^Ȁ_^HOME_x_gs2^Ȁ…
我真的只在这里处理两个数字,2 或 3,所以代码应该是这样的……
If (any number directly before ^Ȁ ==2) change it to 1
else if (any number directly before ^Ȁ ==3) change it to 2
我听说过一种叫做“回头看”或“向后看”的东西,这里需要什么吗?
您可以将 replace
与回调函数一起使用,该函数将使用您自己的逻辑来替换每次出现的事件:
var str = "hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ";
var res = str.replace(/\d(?=\^Ȁ)/g, num => --num);
console.log(res);
在上面的正则表达式中,您会注意到:(?=...)
。正如@revo 所建议的那样,这是一个积极的展望。它允许您匹配 ^Ȁ
,但避免将其传递给您的回调函数。只有数字 (\d
) 将被传递,因此被替换。
我有一长串代码,看起来像
hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ…
我需要做一个替换。一个十六进制字符被重复使用 Ȁ
,它前面总是有一个 ^
。我需要更改每个 ^Ȁ
之前出现的数字,将这些数字减 1。因此最终结果将是...
hs1^Ȁ_^HELLO_x_fs1^Ȁ_^WORLD_x_gn2^Ȁ_^HOME_x_gs2^Ȁ…
我真的只在这里处理两个数字,2 或 3,所以代码应该是这样的……
If (any number directly before ^Ȁ ==2) change it to 1
else if (any number directly before ^Ȁ ==3) change it to 2
我听说过一种叫做“回头看”或“向后看”的东西,这里需要什么吗?
您可以将 replace
与回调函数一起使用,该函数将使用您自己的逻辑来替换每次出现的事件:
var str = "hs2^Ȁ_^HELLO_x_fs2^Ȁ_^WORLD_x_gn3^Ȁ_^HOME_x_gs3^Ȁ";
var res = str.replace(/\d(?=\^Ȁ)/g, num => --num);
console.log(res);
在上面的正则表达式中,您会注意到:(?=...)
。正如@revo 所建议的那样,这是一个积极的展望。它允许您匹配 ^Ȁ
,但避免将其传递给您的回调函数。只有数字 (\d
) 将被传递,因此被替换。