我需要转义正则表达式的特殊字符使用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);
                }

这段代码有什么问题?请带路。


当前回答

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

要使它自动化,你可以使用这个:

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

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

更新:上面提到的建议被拒绝了,所以如果你需要的话,继续自己执行。

其他回答

使用\ you转义特殊字符

将特殊字符转义为文字字符,将文字字符转义为特殊字符。 例如:/\(s\)/匹配'(s)',而/(\s)/匹配任何空白并捕获匹配。

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

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

要使它自动化,你可以使用这个:

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

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

更新:上面提到的建议被拒绝了,所以如果你需要的话,继续自己执行。

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

/\\d/

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