Это должно сделать трюк:
^(?=^.{4,15}$)([a-zA-Z]+[0-9][a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*)$
Смотрите рабочий пример здесь: http://regexr.com?351ia
Объяснение: (Обновлено: теперь с проверкой длины)
Первый положительный прогноз (?=^.{4,15}$)
проверяет длину вашей строки.
Если строка начинается с буквой этой частью регулярного выражения используется для оценки его:
[a-zA-Z]+[0-9][a-zA-Z0-9]*
[a-zA-Z]+
означает, что строка начинается с по крайней мере одной буквы
[0-9]
затем в в некоторых случаях должно быть число
[a-zA-Z0-9]*
, за которым следует любое количество цифр или цифр
Если строка начинается с номером во второй части регулярного выражения используется:
[0-9]+[a-zA-Z][a-zA-Z0-9]*
То же, что выше, только на этот раз там должна быть буквой где-то в строке.
Образец регулярного выражения, который вы указываете, должен содержать алфавиты ИЛИ цифры. – SiddharthaRT
@SiddharthaRT это проблема, которую он только хочет получить смешанные результаты – WhileTrueSleep