jshint正则表达式中未转义的字符

Mut*_*utz 3 javascript regex jshint

我正在尝试使用jshint清理一些Javascript代码.在正在使用的第三方脚本中,jshint在此行中抱怨未转义的javascript:

var cleanString = deaccentedString.replace(/([|()[{.+*?^$\\])/g,"\\$1");
Run Code Online (Sandbox Code Playgroud)

我也想了解这个正则表达式的作用,但我没有看到它.任何人都可以告诉我这是什么以及如何以清理的方式写它?

感谢您的任何提示.

Tim*_*ker 5

它匹配以下任何字符:|()[{.+*?^$\并将其替换为其转义对应物(反斜杠加上该字符).

虽然在许多正则表达式方言中合法包含未转义[的字符类,但它可以在其他方面触发错误,所以试试这个:

var cleanString = deaccentedString.replace(/[|()\[{.+*?^$\\]/g,"\\$0");
Run Code Online (Sandbox Code Playgroud)

(也可以删除不必要的捕获组.)