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

时间:2010-06-25 02:21:31

标签: 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);
                }

我对此代码有什么问题?请指导我。

3 个答案:

答案 0 :(得分:353)

使用\字符转义正则表达式中具有特殊含义的字符。

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

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

更新:现在有一项建议可以在ES2016中标准化此方法:https://github.com/benjamingr/RegExp.escape

更新:上述提案遭到拒绝,请在需要时自行实施。

答案 1 :(得分:12)

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

/\\d/

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

答案 2 :(得分:8)

使用\您可以转义特殊字符

  

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

     

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

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