Если между ними могут быть последовательные пробельные символы, вы можете использовать дополнительную часть, где второй класс символов повторяется 0+ раз, заканчиваясь тем же классом символов, за исключением \s
^[A-Za-z0-9](?:[A-Za-z0-9_.,\s-]*[A-Za-z0-9_.,-])?$
Regex demo
Или использование \w
для сопоставления символов слова:
^[A-Za-z0-9](?:[\w.,\s-]*[\w.,-])?$
Обратите внимание, что \s
также может совпадать с новой строкой.