我有这个功能,它适用于所有浏览器:
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:正则表达式中的语法错误
/[^-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/克
答案 0 :(得分:5)
您可能希望\u037f
代替\u37f
,MSDN specifies:
<强> \ XN 强>
匹配n,其中n是十六进制转义值 十六进制转义值必须正好是两位数 例如,'\ x41'匹配“A”。 '\ x041'相当于'\ x04'&amp; “1”。
允许ASCII代码用于正则表达式。<强> \未强>
匹配n,其中n是Unicode字符,表示为四个十六进制数字 例如,\ u00A9与版权符号(©)匹配。
另外,我想知道,这是一个有效的范围:\xf8-\u037d
(根据asp.net缩小工具)?
您可能想尝试\u00f8-\u037d
(可能添加\xf8-\xff
以补偿本地化代码页的上半部分与该区域中的Unicode之间的差异。)
希望这有帮助。
答案 1 :(得分:0)
接受的答案是正确的。但是,将来您可以使用www.debuggex.com,它会立即为您突出显示错误并给您解释。
在这种情况下,There must be exactly four hex digits after "\u"
。
希望有所帮助:)