如何逃避正则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