Javascript 在动态设置的特定位置使用正则表达式替换字符串

Javascript 在动态设置的特定位置使用正则表达式替换字符串,javascript,regex,Javascript,Regex,我想使用正则表达式替换匹配模式字符串中的字符串 这是我的字符串: "this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this." 现在,我有一个情况,我想用say“hello”替换“只是一个简单的”,但是只在字符串的第三次出现时。

我想使用正则表达式替换匹配模式字符串中的字符串

这是我的字符串:

"this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this."
现在,我有一个情况,我想用say
“hello”
替换
“只是一个简单的”
,但是只在字符串的第三次出现时。所以,如果有人能指导我,我会很有帮助的但这里出现了转折。上述字符串是动态的。用户可以修改或更改文本

那么,如果用户在字符串的开始或第三次出现之前添加了一次或多次“这只是一个简单的文本”,从而改变了字符串的替换位置,我该如何检查


对不起,如果我不清楚;但任何指导或帮助或任何其他方法都会有所帮助。

您可以使用动态构建的正则表达式和回调函数替换,在回调函数中计算搜索模式的出现次数:

var s = "this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this.",
    pattern = "just a simple",
    escapedPattern = pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
    i=0;
s = s.replace(new RegExp(escapedPattern,'g'), function(t){ return ++i===3 ? "hello" : t });

请注意,我曾经对模式中的任何“特殊”字符进行转义。

您可以使用动态构建的正则表达式和回调来替换,在回调中计算搜索模式的出现次数:

var s = "this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this.",
    pattern = "just a simple",
    escapedPattern = pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
    i=0;
s = s.replace(new RegExp(escapedPattern,'g'), function(t){ return ++i===3 ? "hello" : t });

请注意,我曾经对模式中的任何“特殊”字符进行转义。

您可以使用动态构建的正则表达式和回调来替换,在回调中计算搜索模式的出现次数:

var s = "this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this.",
    pattern = "just a simple",
    escapedPattern = pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
    i=0;
s = s.replace(new RegExp(escapedPattern,'g'), function(t){ return ++i===3 ? "hello" : t });

请注意,我曾经对模式中的任何“特殊”字符进行转义。

您可以使用动态构建的正则表达式和回调来替换,在回调中计算搜索模式的出现次数:

var s = "this is just a simple text. this is just a simple text. this is just a simple text. this is just a simple text. How are you man today. I Have been working on this.",
    pattern = "just a simple",
    escapedPattern = pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
    i=0;
s = s.replace(new RegExp(escapedPattern,'g'), function(t){ return ++i===3 ? "hello" : t });

请注意,我曾经转义模式中的任何“特殊”字符。

您可以使用以下正则表达式:

(?:.*?(just a simple)){3}


您可以使用此正则表达式:

(?:.*?(just a simple)){3}


您可以使用此正则表达式:

(?:.*?(just a simple)){3}


您可以使用此正则表达式:

(?:.*?(just a simple)){3}

试试看

JSFIDLE

试试看

JSFIDLE

试试看

JSFIDLE

试试看

JSFIDLE


非常好,一个LAMBDA回调表达式!很好,一个LAMBDA回调表达式!很好,一个LAMBDA回调表达式!很好,一个LAMBDA回调表达式!如果可能,可以澄清“如果用户在字符串的开始或第三次出现之前添加了一次或多次“这只是一个简单的文本”,我如何检查?这会改变我的字符串替换位置?”?如果字符串中添加了“这只是一个简单的文本”,那么“字符串替换位置”是什么?感谢如果可能,您可以澄清“如果用户在字符串的开始或第三次出现之前添加了一次或多次“这只是一个简单的文本”,我如何检查?这会改变我的字符串替换位置?”?如果字符串中添加了“这只是一个简单的文本”,那么“字符串替换位置”是什么?感谢如果可能,您可以澄清“如果用户在字符串的开始或第三次出现之前添加了一次或多次“这只是一个简单的文本”,我如何检查?这会改变我的字符串替换位置?”?如果字符串中添加了“这只是一个简单的文本”,那么“字符串替换位置”是什么?感谢如果可能,您可以澄清“如果用户在字符串的开始或第三次出现之前添加了一次或多次“这只是一个简单的文本”,我如何检查?这会改变我的字符串替换位置?”?如果字符串中添加了“这只是一个简单的文本”,那么“字符串替换位置”是什么?谢谢,你能用JavaScript实现吗?我知道你并没有真正测试。。。试着用正则表达式编写替换函数…你能用JavaScript实现吗?我知道你并没有真正测试过。。。试着用正则表达式编写替换函数…你能用JavaScript实现吗?我知道你并没有真正测试过。。。试着用正则表达式编写替换函数…你能用JavaScript实现吗?我知道你并没有真正测试过。。。尝试用正则表达式编写替换函数。。。