このブログを検索

2010/12/09

[JavaScript] 正規表現でパスワード検証

JavaScript(jQuery)でパスワード入力時の、ポリシー検証をすることになったので、備忘録。

とりあえず、大文字・小文字・数字・記号(いくつかは使用禁止)を、それぞれ最低一つずつ織り交ぜる、ということで↓
var reg = /(?=.*[A-Z]+)(?=.*[a-z]+)(?=.*[0-9]+)(?=.*[許可する記号]+).+$/;
  if ($("#hoge").text().match(reg)) {
        alert("That's Right!!");
  };
のようになる。

はじめはVB.NetとASP.NETで実装していたが、少しはまってしまったのは、

var reg = /(?=.*[A-Z]+)(?=.*[a-z]+)(?=.*[0-9]+)(?=.*[+=-\']+).+$/;

これだとどうも-(マイナス)がJavaScriptだと引っかかるので、エスケープが必要なようだ。
可視化してくれるstrfriendがないとここに気づくのにさらに時間がかかったかも。→http://strfriend.com/

と、満足していたところ、ほんとのところはどうも
「大文字・小文字・数字・記号のうち、いずれか3種類があればOK」とのこと。
var reg = [/(?=.*[A-Z]+).+$/,/(?=.*[a-z]+).+$/,/(?=.*[0-9]+).+$/,/(?=.*[許可する記号]+).+$/];
  var cnt = 0;
  
  for (i = 0; i < 4 ; i += 1) {
      if ($("#hoge").text().match(reg[i])) {
        cnt += 1;
  };
  if (cnt >= 3) {
      alert("That's Right!!");
  };
  }

という感じで落ち着いた。

0 件のコメント:

コメントを投稿