JavaScript 包含某些正则表达式的缩小失败

JavaScript minification fails containing certain Regex

我无法缩小包含此工作的 javascript 文件 Regex:

isValid = function (str) {
    return !/[~`!#$%\^&*+=\-\[\]\';,/{}|\":<>\?]/g.test(str);
},

错误信息:

/* Minification failed. Returning unminified contents.
(2128,43-44): run-time error JS1004: Expected ';': {
(2128,45-46): run-time error JS1195: Expected expression: |
(2128,46-47): run-time error JS1014: Invalid character: \
(2128,47-48): run-time error JS1014: Invalid character: \
(2128,48-70): run-time error JS1015: Unterminated string constant: 
                                     ":<>\?]/g.test(str);
(2129,6-7)  : run-time error JS1195: Expected expression: ,
(2128,17-43): run-time error JS5017: Syntax error in regular expression: 
                                     /[~`!#$%\^&*+=\-\[\]\';,/ 
*/

捆绑包配置:

bundles.Add(new ScriptBundle("~/bundlesJs/custom").Include(
    "~/Scripts/Autogenerated/AntiHacking/antiHackingHelper.js"
));
BundleTable.EnableOptimizations = true;

如何解决?是否有需要转义的字符或我应该包装整个正则表达式?

累积到 ES5 docs,正斜杠不是特殊的正则表达式元字符。

JavaScript 正则表达式引擎始终允许在 RegExp 构造函数符号中使用未转义的 / 您可以使用未转义的 / 字符内的正斜杠 类 即使以正则表达式文字表示法编写,请尝试此代码(在 Chrome,FF 中,我也在 IE 11 中检查过):

console.log( '1//25///6'.match(/\w[/]+\w/g) );
console.log( '1//25///6'.match(RegExp("\w/+\w", "g")) );

但是,最佳做法转义正则表达式定界符以避免任何问题就像你拥有的那样,并保持模式一致和明确。