JSFiddle - React, Tailwind, and code Playground
JavaScript
var testArray = ["aS1%eĀ","12aA56","aA123","A1%ĀBC"];
for(var i=0;i < testArray.length; i++)
alert(testArray[i] + ": " + isValidPassword(testArray[i]));
function isValidPassword(password) {
var unicodeRange = "\\u0100-\\u0105";
var criteria = ["A-Z","a-z","\\d","!$#%",unicodeRange];
// check whether it doesn't include other characters
var re = new RegExp("^[" + criteria.join("") +"]{6,}$");
if(!re.test(password)) return false;
var minSatisfiedCondition = 3;
var satisfiedCount = 0;
for( var i=0; i < criteria.length; i++) {
re = new RegExp("[" + criteria[i] + "]");
if(re.test(password)) ++satisfiedCount;
}
return (satisfiedCount >= minSatisfiedCondition);
}