用于转义Java正则表达式字符串的JavaScript函数

时间:2012-12-28 21:45:25

标签: javascript regex escaping

关于StackOverflow的早期问题讨论了对JavaScript正则表达式的转义,例如:

建议实施如下:

RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};

鉴于两种语言中的正则表达式不相同,是否有人知道正确转义字符串以用于Java正则表达式的JavaScript方法?

1 个答案:

答案 0 :(得分:2)

根本不需要任何逃避。这些问题是关于当正则表达式被构造为源语言中的字符串时需要做什么。由于您正在从输入字段中读取字符串,因此无需担心解释层。

只需将字符串发送到服务器,在那里它将被发现是有效的正则表达式。

编辑 - 尽管我无法想到,但真正需要担心的可能是任何可以通过这条途径进行的“注入”攻击。在我看来,如果您只是将正则表达式传递给Pattern.compile(),则没有任何副作用通道可以被利用。