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

2022-08-30 01:11:37

我需要使用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);
                }

我用这个代码错了什么?请指导我。


答案 1

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

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

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

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

更新:上述提案被拒绝,因此如果需要,请继续自己实现。


答案 2

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

/\\d/

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