有没有一种干净的方法来反转与 JavaScript 中特定正则表达式匹配的子字符串?
例如,对于正则表达式/[a-g]+/
和字符串之类的ex,仅"sgsadebfdzgbd"
获取"sgsdfbedadbg"
Where 的子字符串"adebfd"
并"gbd"
就地反转。
有没有一种干净的方法来反转与 JavaScript 中特定正则表达式匹配的子字符串?
例如,对于正则表达式/[a-g]+/
和字符串之类的ex,仅"sgsadebfdzgbd"
获取"sgsdfbedadbg"
Where 的子字符串"adebfd"
并"gbd"
就地反转。
使用自定义函数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("");
});
请注意,仅使用正则表达式是不可能的:
棘手的一点是对任意长字符串进行字符串反转。正则表达式在识别能力上等同于有限自动机。这些(在某种意义上)只有一个固定的有限大小的存储。但是要处理任意长字符串的反转,您需要一个可以存储任意条目的存储,例如堆栈。
这就是为什么您会看到另一个答案中使用的反向功能。