Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式规则正在破坏ASP.NET的小型化_Javascript_Asp.net_Regex - Fatal编程技术网

JavaScript正则表达式规则正在破坏ASP.NET的小型化

JavaScript正则表达式规则正在破坏ASP.NET的小型化,javascript,asp.net,regex,Javascript,Asp.net,Regex,我有这个功能,它可以在所有浏览器中正常工作: cleanKey = function( key ){ return key.replace( /[^-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/g, "-" ); }; 但是,我的ASP.NET MVC 3项目在尝试缩小代码时抛出正则表达式语法错误: 运行时错误JS5

我有这个功能,它可以在所有浏览器中正常工作:

    cleanKey = function( key ){
        return key.replace( /[^-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/g, "-" );
    };
但是,我的ASP.NET MVC 3项目在尝试缩小代码时抛出正则表达式语法错误:

运行时错误JS5017:正则表达式中的语法错误
/[^-.\u 0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1ff\u200c-\u200d\u203f\u2040\u2070-\u218f]/g


您可能希望尝试
\u037f
而不是
\u37f
,因为:

\xn
匹配n,其中n是十六进制转义值。
十六进制转义值的长度必须正好是两位数。
例如,“\x41”与“A”匹配。“\x041”相当于“\x04”和“1”。
允许在正则表达式中使用ASCII代码

\un
匹配n,其中n是表示为四个十六进制数字的Unicode字符。
例如,\u00A9与版权符号(©匹配

另外,我想知道这是一个有效的范围:
\xf8-\u037d
(根据asp.net缩小工具)?
您可能想试试
\u00f8-\u037d

(可以添加
\xf8-\xff
,以补偿本地化代码页的上半部分与该区域的Unicode之间的差异。)


希望这有帮助。

公认的答案是正确的。但是,在将来,您可以使用,它将立即为您突出显示错误并给出解释

在这种情况下,
在“\u”之后必须正好有四个十六进制数字。


希望有帮助:)

我冒昧地编辑了你的问题,因为我相信你问题的前一稿更好:它还包括js代码、相关错误号和错误消息(对未来的谷歌搜索有用),并指出(正确地)正则表达式在大多数浏览器中都有效。很酷的工具插件。出于好奇,那
\xf8-\u037d
范围呢?这难道不应该被抓住吗?我的理解是,“ascii”通常是一个本地化的代码页(如“win1252”),并且(除了下半部分)与Unicode不同(除非该网页被用作Unicode)。但是我可能是错的1.对延迟回复表示歉意。两个转义序列都表示16位代码点。因此,只要第一个代码点小于第二个代码点,范围就有效。有关更多信息,请参阅