例如,如何查找和替换字符串中每隔三分之一的'x'字符并用正则表达式替换?
有similar question,但它寻址第四个字符,但我需要字符串中第n个出现的特定字符。
我正在使用javascript replace()方法,以下示例将每个x字符更改为y:
NavBarModule
但是我该如何为上述问题编写正则表达式?
例如一些随机文本和预期结果:
我在Sxundxaxs上ax nexver axt hoxme。
收件人:
我在Sxundyaxs上架了斧。
我可以将JS replace(/\x/g, 'y')
循环与for
和split()
一起使用,但是使用join()
方法的解决方案似乎更加优雅。
答案 0 :(得分:4)
您可以使用:
str = str.replace(/((?:[^x]*x){2}[^x]*)x/g, '$1y');
因此,如果您要搜索第三个匹配项,请在上述正则表达式的n-1
之间使用{}
。
要动态构建,请使用:
let str = 'I amx nexver axt hoxme on Sxundxaxs';
let n = 3;
let ch = 'x';
let regex = new RegExp("((?:[^" +ch+ "]*" +ch+ "){" + (n-1) + "}[^" +ch+ "]*)" +ch, "g");
str = str.replace(regex, '$1y');
console.log(str);
//=> I amx nexver ayt hoxme on Sxundyaxs