JavaScript RegEx 来替换连续的字符串

JavaScript RegEx to replace consecutive strings

本文关键字:字符串 连续 替换 RegEx JavaScript      更新时间:2023-09-26

我有一个看起来像这样的字符串

"+919357F%7F%7F%7F%00%00%00%29Your%20OTP%20for"

我需要将所有连续的%7F替换为~

我用这个命令找到了一个几乎可行的解决方案

"+919357F%7F%7F%7F%00%00%00%29Your%20OTP%20for".replace(/[%7F]{2,}/g, '~');

但出于某种原因,它确实会吃掉我需要保持完整的其他一些%痕迹。我也不明白{2,}代表什么?我知道它负责连续替换,但不确定为什么 2 或 3 有什么不同?

正则表达式中存在的[]字符类)替换为()捕获或非捕获组)。在字符类中,所有字符都被视为单独的模式。因此,[fo]将匹配fo单个字符,而不是像fo这样的字符组

str.replace(/(?:%7F){2,}/g, '~');

这会将两个或多个%7F替换为 ~ 。也就是说,%7F%7Fb%7F将更改为~b%7F

str.replace(/(?:%7F)+/g, '~');

但这会将一次或多次%7F的出现替换为 ~ 。所以%7F%7Fb%7F会改为~b~