3

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

例如,对于正则表达式/[a-g]+/和字符串之类的ex,仅"sgsadebfdzgbd"获取"sgsdfbedadbg"Where 的子字符串"adebfd""gbd"就地反转。

4

2 回答 2

2

使用自定义函数replace

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("");
});
于 2013-07-13T13:59:06.390 回答
1

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

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

这就是为什么您会看到另一个答案中使用的反向功能。

于 2013-07-13T14:43:16.483 回答