如何使用javascript转义正则表达式特殊字符?

Mun*_*ian 152 javascript regex

我需要使用java脚本转义正则表达式特殊字符.如何实现这一点?任何帮助都应该被理解.


感谢您的快速回复.但我需要逃避正则表达式的所有特殊字符.我已经尝试了这段代码,但我无法达到结果.

RegExp.escape=function(str)
            {
                if (!arguments.callee.sRE) {
                    var specials = [
                        '/', '.', '*', '+', '?', '|',
                        '(', ')', '[', ']', '{', '}', '\\'
                    ];
                    arguments.callee.sRE = new RegExp(
                    '(\\' + specials.join('|\\') + ')', 'gim'
                );
                }
                return str.replace(arguments.callee.sRE, '\\$1');

            }

function regExpFind() {
            <%--var regex = new RegExp("\\[munees\\]","gim");--%>
                    var regex= new RegExp(RegExp.escape("[Munees]waran"));
                    <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%>
                    alert("Reg : "+regex);
                }
Run Code Online (Sandbox Code Playgroud)

这段代码我错了什么?请指导我.

Mat*_*ens 385

使用该\字符可以转义正则表达式中具有特殊含义的字符.

要自动化它,您可以使用:

function escapeRegExp(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}
Run Code Online (Sandbox Code Playgroud)

更新:现在有一个标准化此方法的提议,可能在ES2016中:https://github.com/benjamingr/RegExp.escape

更新:上述提案被拒绝,因此如果您需要,请继续自行实施.

  • 当我没有向前冲突时,我收到来自正则表达式验证器的投诉,所以我将其添加到你最优秀的模式`/[- [\} {}(+)*+?.,\\// _ $./g` (5认同)
  • [MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)也使用`string.replace(/ [。 * +?^ $ {}()| [\] \\] / g,'\\ $&')`。有人熟悉它的潜在缺点吗? (2认同)
  • 我在这里添加了一个答案 [/sf/answers/4468722331/],尽管 TC39 做出了不幸的决定,但它还是实现了提议的标准化方法。即使他们没有看到标准化的价值,如果我们都可以使用相同的标准,我们也可能会看到。 (2认同)

Ben*_*owe 14

使用反斜杠来转义字符.例如:

/\\d/
Run Code Online (Sandbox Code Playgroud)

这将匹配\ d而不是数字字符


Cla*_*edi 8

随着\你逃脱特殊字符

将特殊字符转换为特殊字符和文字字符.

例如:/(s)/匹配'(s)'而/(\ s)/匹配任何空格并捕获匹配.

资料来源:http://www.javascriptkit.com/javatutors/redev2.shtml