我想使用正则表达式替换匹配模式字符串中的字符串。
这是我的字符串:
"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."
现在,我有一种情况,我希望将"just a simple"
替换为"hello"
,而仅替换为第三次出现串。所以任何人都可以指导我完成这一点,我将非常有帮助。 但扭曲来了。上面的字符串是动态的。用户可以修改或更改文本。
那么,如果用户在开始时或在第三次出现字符串之前添加"this is just a simple text"
一次或多次更改我的字符串替换位置,我该如何检查?
对不起,如果我不清楚;但任何指导或帮助或任何其他方法都会有所帮助。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以将replace
与动态构建的正则表达式和回调一起用于计算搜索模式的出现次数:
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 });
请注意,我使用this related QA来转义模式中的任何“特殊”字符。
答案 2 :(得分:0)
尝试
$(selector)
.data("r", ["simple text", 3, "hello"])
.text(function (i, o) {
var r = $(this).data("r");
return o.replace(new RegExp(r[0], "g"), function (m) {
++i;
return (i === r[1]) ? r[2] : m
})
}).data("r", []);
jsfiddle http://jsfiddle.net/guest271314/2fm91qox/
见
Find and replace nth occurrence of [bracketed] expression in string