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);
    }