[A-Za-z!$#%\d\u0100]{6}
matches aS1%eĀ
.
\u0100
is for Ā. You can insert other Unicode codes that you need. You can find them here.
EDIT: For minimum 6 characters the correct regex is [A-Za-z!$#%\d\u0100]{6,}
.
EDIT 2: To include a range of Unicode characters (let that be Latin Extended-B), the regex should look like ^[A-Za-z!$#%\d\u0100-\u017f]{6,}$
. You can find the Unicode code ranges here.
EDIT 3: I've developed a tiny function that checks whether the given password conforms to the criterias. You need to define the unicode range in the function.
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);
}
There is a working sample here.