Not sure about your poll options. And I'm a little confused about your description. Why is "AAbcdd123444" unacceptable? The repeating characters aren't consecutive.
That said, the one I came up with that matched on all three of your unacceptable answers, and did not match on your acceptable answers is this:
/([A-Za-z0-9])\1{1,}.*([A-Za-z0-9])\2{1,}.*([A-Za-z0-9])\3{1,}/g
I would do an inverse match, meaning, if the match is positive, the result is unacceptable. So, something like:
let pattern = /([A-Za-z0-9])\1{1,}.*([A-Za-z0-9])\2{1,}.*([A-Za-z0-9])\3{1,}/g;
let strings = [
'A123bcd456', 'Abcd12345678', 'AAbcdd123456', // all ok
'AAbbcc123456', 'AAAbbccc1234', 'AAbcdd123444' // all not ok
];
strings.forEach(function(string) {
if (!string.match(pattern)) {
console.log(string + ' is ok');
}
else {
console.log(string + ' is not ok');
}
});
Result:
A123bcd456 is ok
Abcd12345678 is ok
AAbcdd123456 is ok
AAbbcc123456 is not ok
AAAbbccc1234 is not ok
AAbcdd123444 is not ok