是否有一种干净的方法来反转匹配JavaScript中特定正则表达式的子串?
对于像/[a-g]+/
这样的正则表达式以及像"sgsadebfdzgbd"
这样的字符串来获取"sgsdfbedadbg"
,其中只有子字符串"adebfd"
和"gbd"
被撤销到位
答案 0 :(得分: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("");
});
答案 1 :(得分:1)
请注意,仅使用正则表达式是不可能的:
棘手的一点就是对任意长字符串进行字符串反转。正则表达式相当于对有限自动机的识别能力。这些(在某种意义上)只有一个固定的有限大小的存储空间。但是要处理任意长字符串的反转,你需要一个可以存储任意条目的存储器,比如堆栈。
这就是为什么你会看到另一个答案中使用的反向函数。