^ # start of string
(?=.{6,15}$) # assert length
(?=.*[A-Za-z]) # assert letter
(?=.*[0-9]) # assert digit
(?:(.)(?!\1\1))* # assert no more than 2 consecutive characters
$ # end of string
сделает это. Но это не выглядит красиво (или легко поддерживается) в JavaScript:
if (/^(?=.{6,15}$)(?=.*[A-Za-z])(?=.*[0-9])(?:(.)(?!\1\1))*$/.test(subject)) {
// Successful match
} else {
// Match attempt failed
}