JSFiddle - React, Tailwind, and code Playground
by jorgenfb
JavaScript
var alphas = "abcdefghjknpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
var specials = "!#$%&/()=`";
var numbers = "1234567890";
var requiredSpecials = 1;
var requiredNumbers = 2;
function pickRandom(str, count){
var remaining = str;
var result = "";
while (remaining.length > 0 && count > 0){
// pick random char from remaining
var char = remaining.charAt(Math.floor(Math.random() *remaining.length));
// remove char from remaining. (Just replace with empty string)
remaining = remaining.replace(char, "");
// add char to result
result += char;
// decrement count
count -= 1;
}
return result;
}
function shuffleString(str){
var arr = str.split(''); // Convert to array
arr.sort(function(){ // Sort by random
return 0.5-Math.random()
})
return arr.join(''); // Join back to string
}
function generate(length){
var specialCount = requiredSpecials;
var numberCount = requiredNumbers;
var alphaCount = length - specialCount - numberCount;
var tmp = pickRandom(alphas, alphaCount) + pickRandom(specials, specialCount) + pickRandom(numbers, numberCount);
// Shuffle and return
return shuffleString(tmp);
}
alert(generate(9))