2020-06-28

javascript:パスワード生成

パスワードを生成するWebアプリを作りました。

パスワード生成

◆ html
<!DOCTYPE html> 
<html>
<head> 
<meta charset=UTF-8">
<title>パスワード生成</title> 
<link rel=icon href="../../_img/BlueSky_favicon.png" sizes="16x16" type="image/png">
<link rel="stylesheet" type="text/css" href="http://s10-4bn.sunnyday.jp/_css/reset.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

<script type="text/javascript">
  $(function() {
    let password = "";
    for (let i=0; i<100; i++) {
      password = createPass();
      if(password.match(/^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i)){
        // [a-z\d]{8,100} 英字大小関わらずaからz、または、0から9の文字中で8字以上100字以下の連続
        // (?=.*?[a-z])(?=.*?\d) 任意の0回以上の文字列.*?とaからzの1文字[a-z]を条件とした任意の位置の先頭位置(?= )、
        //                       かつ、任意の0回以上の文字列.*?と数字1文字\dを条件とした任意の先頭位置(?= )
        break;
      }
    }

    $("h2").text(password);
    $('#copybtn').on('click', function(){
      // コピーする文章の取得
      let text = $('#pass').text();
      // テキストエリアの作成
      let $textarea = $('<textarea></textarea>');
      // テキストエリアに文章を挿入
      $textarea.text(text);
      // テキストエリアを挿入
      $(this).append($textarea);
      // テキストエリアを選択
      $textarea.select();
      // コピー
      document.execCommand('copy');
      // テキストエリアの削除
      $textarea.remove();
      // アラート文の表示
      $('#js-copyalert').show().delay(2000).fadeOut(400);
    });

    function createPass() {
      let password_base = '2346789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRTUVWXYZ';
      let length = 10;
      let password = '';
      for (let i = 0; i < length; i++) {
        password += password_base.charAt(Math.floor(Math.random() * password_base.length));
      }
      console.log(password);
      return password;
    }

  });

</script> 

<style type="text/css">
h1 { 
  margin: 2rem;
  font-size: 2rem;
}
h2 { 
  margin: 1.5rem;
  font-size: 1.5rem;
}
button { 
  margin: 1rem;
}
</style>

</head> 

<body> 
  <div style="text-align: center;">
  <h1>パスワード生成</h1>
  <h2 id="pass">></h2>
  <button type="button" id="copybtn">copy</button>
  <p id="js-copyalert" class="copy_alert" style="display: none;">copied</p>
  </div>
</body> 

</html>

参考:
【jQuery】テキストをクリップボードにコピーする方法【コピペOK】
Javascriptでランダムなパスワードを生成する
パスワード向け正規表現 /^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i を解読する


以上