【问题标题】:JavaScript function to escape Java regular expression string用于转义 Java 正则表达式字符串的 JavaScript 函数
【发布时间】:2012-12-14 02:44:39
【问题描述】:

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

建议的实现如下:

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

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

【问题讨论】:

    标签: javascript regex escaping


    【解决方案1】:

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

    只需将字符串发送到服务器,服务器就会发现它是否是有效的正则表达式。

    edit — 虽然我想不出,但真正需要担心的可能是可以通过这种途径进行的任何类型的“注入”攻击。在我看来,如果您只是将正则表达式传递给Pattern.compile(),则没有任何可以利用的副作用渠道。

    【讨论】:

    • 您对注入攻击和“无解释”案例的看法是正确的,因此我将问题修改为仅关注 JavaScript 代码,这是主要话题。谢谢!
    • @PNS 好的。好吧,没有用于处理 Java anything 的内置 JavaScript 函数。如果输入正则表达式的人希望能够使用正常的正则表达式语法,则进行这样的替换是合适的。我唯一不确定的是?,因为正则表达式语法中的(?: ... )
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多