Javascript 翻转匹配子串

Javascript 翻转匹配子串,javascript,regex,string,Javascript,Regex,String,有没有一种干净的方法可以反转JavaScript中与特定正则表达式匹配的在位子字符串 对于类似于/[a-g]+/的正则表达式和类似于的字符串“sgsadebfdzgbd”的表达式,可以获得“sgsdfbedadbg”,其中只有子字符串“adebfd”和“gbd”在适当位置反转。使用替换的自定义函数: your_string.replace(/([a-g]+)/g, function(all, word) { return word.split("").reverse().join(""

有没有一种干净的方法可以反转JavaScript中与特定正则表达式匹配的在位子字符串


对于类似于
/[a-g]+/
的正则表达式和类似于
的字符串“sgsadebfdzgbd”
的表达式,可以获得
“sgsdfbedadbg”
,其中只有子字符串
“adebfd”
“gbd”
在适当位置反转。

使用
替换
的自定义函数:

your_string.replace(/([a-g]+)/g, function(all, word) {
     return word.split("").reverse().join("");
});
例如:

> "sgsadebfdzgbd".replace(/([a-g]+)/g, function(all, word) {
   return word.split("").reverse().join("");
});
"sgsdfbedazdbg"
您也可以使用这个较短但(在我看来)不太清晰的版本:

your_string.replace(/[a-g]+/g, function(word) {
     return word.split("").reverse().join("");
});

请注意,仅使用正则表达式是不可能的:

棘手的一点是对任意长字符串进行字符串反转。正则表达式的识别能力相当于有限自动机。这些(在某种意义上)只有一个固定的有限大小的存储空间。但要处理任意长字符串的反转,您需要一个可以存储任意项的存储器,如堆栈

这就是为什么在另一个答案中使用了反向函数