在javascript或jquery中查找字符串模式并替换该模式之间的字符的最佳方法?
说我有一根绳子在javascript或jquery中查找字符串模式并替换该模式之间的字符的最佳方法?,javascript,jquery,Javascript,Jquery,说我有一根绳子 Thi__(1)__s i__(2)__s a test__(5)__ mess__(4)__age __(6)__ 我想用数字-1替换模式之间的数字,也就是说,用1替换2,用2替换3,以此类推。有一个条件,这个数字应该大于3 所以我的最后一个字符串看起来像 Thi__(1)__s i__(2)__s a test__(4)__ mess__(3)__age __(5)__ 我知道如何对此进行逻辑分析,但由于我不熟悉Javascript/Jquery,我正在寻找更好的方法 如
Thi__(1)__s i__(2)__s a test__(5)__ mess__(4)__age __(6)__
我想用数字-1替换模式之间的数字,也就是说,用1替换2,用2替换3,以此类推。有一个条件,这个数字应该大于3
所以我的最后一个字符串看起来像
Thi__(1)__s i__(2)__s a test__(4)__ mess__(3)__age __(5)__
我知道如何对此进行逻辑分析,但由于我不熟悉Javascript/Jquery,我正在寻找更好的方法
如果有任何帮助,我们将不胜感激。请与我们分享您的尝试。regex和logic test的结合可能吗?我首先获取所有模式,修改它们,将其存储在列表中,然后在字符串中用1替换它们。我就是这样一个傻瓜:-你应该在你的图案中加上“s”。@Bergi thx。添加了Moar捕获组:谢谢你,尤里。你救了我:。这正是我想要的。我看到您在那里使用了regex,但我仍然不知道该函数在做什么。尽可能回复:@KunalMawar该函数获取所有捕获的组并组合它们以返回新的子字符串,该子字符串应插入,而不是匹配的子字符串。左边是“\uuuu”,val是数字seq,右边是“\uuu”。
var str = "Thi__(1)__s i__(2)__s a test__(5)__ mess__(4)__age __(6)__";
var replaced = str.replace(/(__\()(\d+)(\)__)/g, function(_, left, val, right){ //replace all (digits)
val = +val; //convert to number
return left + (val > 3 ? --val: val) + right; //use whatever convert logic you need
});