3

私はこの機能を持っており、すべてのブラウザで正常に動作します:

    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]/g

4

2 に答える 2

5

MSDN が次のように指定しているため、\u037f代わりに試してみることをお勧めします。\u37f

\xn
n に一致します。n は 16 進数のエスケープ値です。
16 進数のエスケープ値は、正確に 2 桁の長さでなければなりません。
たとえば、「\x41」は「A」に一致します。'\x041' は '\x04' & "1" と同等です。
正規表現で ASCII コードを使用できるようにします。

\un
n に一致します。n は4 桁の 16 進数で表されるUnicode 文字です。
たとえば、\u00A9 は著作権記号 (©) に一致します。

また、これは有効な範囲\xf8-\u037d ですか?(asp.net minify ツールによると)? 代わり
に試してみることをお勧めします。 (おそらく、ローカライズされたコードページの上半分とその地域の Unicode との違いを補うために追加します。)\u00f8-\u037d
\xf8-\xff

お役に立てれば。

于 2013-04-18T22:54:28.113 に答える
0

受け入れられた答えは正しいです。ただし、将来的にはwww.debuggex.comを使用できます。これにより、エラーがすぐに強調表示され、説明が表示されます。

この場合、There must be exactly four hex digits after "\u".

それが役立つことを願っています:)

于 2013-04-19T03:33:56.310 に答える