パスワード生成
◆ 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 を解読する
以上