/\w{6}/.test(password)
Нет, это не
At least six characters long
Это просто шесть символов подряд, до и после них может быть что угодно, в том числе и не требуемые alphanumeric. Поэтому: надо указать, что проверяется вся строка целиком (
^ - начало строки,
$ - конец); символов может быть больше шести (квантификатор
{} позволяет указывать диапазон значений, верхнюю границу оставляем открытой). Т.е., правильно будет так:
/^\w{6,}$/.test(password)
UPD.
\w - не alphanumeric, это ещё и
_, так что придётся перечислить нужные символы в более явном виде. Кроме того, вместо четырёх отдельных выражений можно сделать одно:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,}$/.test(password)