Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript或jquery中查找字符串模式并替换该模式之间的字符的最佳方法?_Javascript_Jquery - Fatal编程技术网

在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
});