我正在尝试使用jshint清理一些Javascript代码。在正在使用的第三方脚本中,jshint在此行中抱怨未转义的javascript:
var cleanString = deaccentedString.replace(/([|()[{.+*?^$\\])/g,"\\$1");
我也想了解这个正则表达式的作用,但我没有看到它。谁能告诉我这是为了什么以及如何以清理的方式写出来?
感谢您的任何提示。
答案 0 :(得分:5)
它匹配以下任何字符:|()[{.+*?^$\
并将其替换为其转义对应字符(反斜杠加上该字符)。
虽然许多正则表达式方言在字符类中包含未转义的[
是合法的,但它可能会在其他人中引发错误,所以试试这个:
var cleanString = deaccentedString.replace(/[|()\[{.+*?^$\\]/g,"\\$0");
(也可以删除不必要的捕获组。)
答案 1 :(得分:3)
正则表达式选择“特殊”字符并在前面填充反斜杠。我的猜测是,它不喜欢角色类中的裸体“[”,但这只是猜测。你可以试试:
var cleanString = deaccentedString.replace(/([|()\[{.+*?^$\\])/g,"\\$1");
你有另一个选择就是不要担心jshint说的话;毕竟,它只是一个咨询工具,如果代码在所有浏览器中都能正常运行,那么建议显然是错误的: - )