43

JSLint は、次の行の安全でない '^'を報告します。何故ですか?それとも、文字クラスを否定したいときはいつでも不平を言うのでしょうか?

// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^\w,\-]/g, '');
4

3 に答える 3

38

これは、下部でオプションが選択されている場合にのみ実行されます。

Disallow insecure . and [^...] in /RegExp/

ドキュメントから:

真の場合。[^...] は RegExp リテラルでは許可されません。これらのフォームは、安全なアプリケーションで検証する場合は使用しないでください。

したがって、質問に答えてください。正規表現を開始して^チェックすると、毎回エラーがスローされます。問題はユニコード文字にあり、そこにはほとんど何でも許可されており、セキュリティの問題や検証バイパスの問題が発生する可能性があります。何かを許可しない (バイパスできる) のではなく、有効な文字だけを許可します。

于 2010-11-05T19:17:20.657 に答える