2011-05-11 36 views
0

私は、パスワードポリシーのチェックのためにJavaScriptで以下の正規表現を使用しています: 正規表現のJavascript

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$_])(?=.*[\d\W]).*$ 

は私が期待として渡さ http://www.nvcc.edu/home/drodgers/ceu/resources/test_regexp.asp

テストケースをオンライン正規表現チェッカーを使用して上記の正規表現を試してみました、負のテストケースに失敗しました。しかし、アプリケーションにデプロイされたときに同じ正規表現が正しく検証されません。 [email protected]が動作しない、[email protected]作品 Asd56544#12も正常に動作します:例えばのために

上記の正規表現で何が間違っているのか教えてください。

+0

これはうまくいくようです。 –

+0

先の '。*'や最後のグループ ' ?=。* [\ d \ W]) '? (それはあなたの問題ではない) –

+0

um、あなたのテストケースのすべてが私のために(彼らがすべきである)合格する。それが失敗しているというコードを投稿できますか? –

答えて

0

構文は正しいですか?

は、このJSfiddleを見てください、そこにすべてのテストケースは、私のアドバイスは、いくつかの簡単なregex'esに、この正規表現を分離することである

http://jsfiddle.net/pCLpX/

0

を渡します。 パスワードのルールを割り当てることができます。また、ルールごとに正規表現を割り当てることもできます。例

  1. ルール№1のために

    。パスワードの最小長= 8文字(正規表現なしで行うことができます)

  2. ルール№2。少なくとも1桁は必要です。 (/[0-9]/
  3. ルール№3。少なくとも1文字は必要です(/[a-z]/i
  4. ルール№4。パスワードの不正な文字
  5. ルール№n(あなたは、ユーザーがパスワードに使用したくないいくつかの文字のための正規表現) - このアプローチでは(など)いくつかの小さな正規表現

をより早く検証を管理する方がより簡単になります。たとえば、1年後には、パスワードポリシーを変更する必要があります。あなたはあなたの大きな正規表現が意味することを忘れてしまいます(そして、その大きな正規表現を変更するか、新しい正規表現を行うのに多くの時間を費やすでしょう)。しかし、少し離れた正規表現(ルールを意味する)を使うと簡単にパスワードポリシーを設定することができます

+0

あなたのヒントや反応に感謝します。私は最後の部分(?=。* [\ d \ W])を削除し、うまく動作し始めました。なぜ私は\ dまたは\ wを分別してはいけないのですか? – user632323

+0

2 user632323:(?=。* [\ d \ W])を追加することで何をしたいですか?これは、「数字の前の任意の記号か単語ではない」を意味し、 –