如何逃避正则expression式特殊字符使用JavaScript?

我需要使用Java脚本来逃避正则expression式特殊字符。我可以如何实现这一点?任何帮助,应该感激。


感谢您的快速回复。但我需要逃避正则expression式的所有特殊字符。我已经尝试了这个代码,但我无法实现结果。

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); } 

这个代码我错了吗?请指导我。

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

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

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

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

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

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

 /\\d/ 

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

\你转义特殊字符

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

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

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