用于转义Java正则表达式字符串的JavaScript函数
有关StackOverflow的早期问题讨论了JavaScript正则表达式的转义,例如:用于转义Java正则表达式字符串的JavaScript函数,javascript,regex,escaping,Javascript,Regex,Escaping,有关StackOverflow的早期问题讨论了JavaScript正则表达式的转义,例如: 建议的实施方案如下: RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); }; 鉴于这两种语言中的正则表达式并不相同,有人知道一种JavaScript方法可以正确地转义用于Java正则表达式的字符串吗?根本不需要转义。这些问题是关于当正则表达式在源语言中被构造为字符串时
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
鉴于这两种语言中的正则表达式并不相同,有人知道一种JavaScript方法可以正确地转义用于Java正则表达式的字符串吗?根本不需要转义。这些问题是关于当正则表达式在源语言中被构造为字符串时需要做什么。因为您是从输入字段读取字符串,所以不需要担心解释层 只需将字符串发送到服务器,就会发现它是否是有效的正则表达式
编辑-虽然我想不出任何,但真正需要担心的可能是通过这条途径进行的任何类型的“注射”攻击。在我看来,如果您只是将正则表达式传递给
Pattern.compile()
,那么就没有任何可以利用的副作用通道。关于注入攻击和“无解释”案例,您是对的,所以我修改了问题,只关注JavaScript代码,这是主要主题。谢谢@好的。没有内置的JavaScript函数来处理Java任何东西。如果输入正则表达式的人希望能够使用正常的正则表达式语法,那么这样做是合适的。我唯一不确定的是?
,因为regex语法中有(?:…)
之类的东西。