从变量中消毒正则表达式构造
问题描述:
我有一个动态的正则表达式构造,它像一个突出显示器一样工作。从变量中消毒正则表达式构造
我需要防止用户输入打破正则表达式。
例如,如果用户输入 “\\”:
var search = '\\';
var regex = new RegExp('(' + search + ')');
var replaced = someData.replace(regex, '<b class="h">$1</b>');
这将产生畸形的正则表达式的一个例外。
有没有什么功能可以防止这种情况发生,而不使用try-catch预防?
答
变化,
var search = '\\';
到
var search = '\\\\';
它是失败的原因是,\
是转义字符,为了得到\
你需要逃出像这样的字符:\\
,即产生\
。
因此\\\\
产生\\
。
他正在寻找一种通用的方式来将东西插入到正则表达式中。 – 2015-09-04 15:17:57
请考虑编辑您的帖子以添加更多关于您的代码的解释以及为什么它可以解决问题。一个主要包含代码的答案(即使它正在工作)通常不会帮助OP了解他们的问题。 – SuperBiasedMan
为什么上述链接没有提到这个'return s.replace(/(\ W)/ g,'\\ $ 1');' –