Вам нужно отделить проверку длины символа от шаблона и не забывать привязки, если не добавить неявно:
^(?=.{6,255}$)[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*$
Если может быть только одно подчеркивание, замените последний *
на ?
.
Подробности:
^
- начало строки (?=.{6,255}$)
- проверка длины, от 6 до 255 символов другое чем символы разрыва строки [a-zA-Z0-9]+
- 1 или более буквенно-цифровых символов (?:_[a-zA-Z0-9]+)*
- ноль или более вхождений: _
- символ подчеркивания [a-zA-Z0-9]+
- 1 или более буквенно-цифровые символы $
- конец строки.