3

JSLint を使用して JavaScript を実行すると、同じコード行から次の 2 つのエラーが発生します。

Problem at line 398 character 29: Insecure '.'.

if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))

Problem at line 398 character 41: Unescaped '^'.

if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))

JSLintが「慎重すぎる」可能性があることを理解しています。同様の質問、Purpose of JSLint "disallow insecure in regex" optionに関するコメントを読みました。

それにもかかわらず、私はすべての世界で最高のものを持ち、JSLint が文句を言わない動作する正規表現を持ちたいと思っています。

しかし、私は正規表現で失敗します。

少なくとも 1 つの特殊文字の存在を探すが、JSLint が文句を言わない正規表現を作成することは可能ですか?

4

1 に答える 1

3

これは文字クラスです。区切り記号 (例: コンマ) は必要ありません。キャレット ( ^) とダッシュ ( -) を戦略的な位置に配置することで、正規表現をクリーンアップして、エスケープする必要がないようにすることができます。

/[!@#$%^&*?_~()-]/

動作するはずです。単語以外の文字クラスも使用できます。

/\W/

これは、文字 ( )、数字 ( )、アンダースコア ( )以外のすべてに一致します。a-zA-Z0-9_

于 2010-09-21T06:06:30.380 に答える