Javascript:替换多行字符串中第n次出现的子字符串



我想替换第n次发生时,字符串有多行使用Javascript,我尝试了各种方法从以前的答案,但没有一个是工作时,有换行在字符串

例如:

var someString="I have a cat, my cat is intelligent,n my cat is very active";
someString= someString.replace(RegExp("^(?:.*?my cat){2}"), function(x){return x.replace(RegExp("my cat$"), 'our cat abc')});
console.log(someString);

我希望我的输出是:

I have a cat, my cat is intelligent,
our cat abc is very active
相反,它打印的是相同的字符串:
I have a cat, my cat is intelligent,
my cat is very active

是否有一种方法来替换多行字符串中的第n次出现,如使用Javascript

提前感谢。

您的正则表达式不匹配。.将不匹配换行符,所以我将使用(?:.|n)代替。

var someString="I have a cat, my cat is intelligent,n my cat is very active";
someString= someString.replace(new RegExp("(?:(?:.|n)*?my cat){2}"), function(x){return x.replace(RegExp("my cat$"), 'our cat abc')});
console.log(someString);

或者使用" "(单行)修饰语

var someString="I have a cat, my cat is intelligent,n my cat is very active";
someString= someString.replace(new RegExp("(?:.*?my cat){2}", "s"), function(x){return x.replace(RegExp("my cat$"), 'our cat abc')});
console.log(someString);

最新更新