>>106749733
that's why you split out the inner checkers as separate functions. it is medium to write a regex for "only letters and digits, must contain at least one of each" (must remember look-aheads) but it is easy to write a function that uses 3 regexes.
/^[A-Za-z0-9]+$/.test(str) && // only letters and digits
/[A-Za-z]/.test(str) && // has a letter
/\d/.test(str); // has a digit