Попробуйте следующее:
^[-\w\s]+(?:,[-\w\s]*)*$
Использование ^
и $
гарантирует, что мы проверим все значение и не просто найдем совпадение где-то внутри.
Первый класс символов [-\w\s]+
позволяет использовать один или несколько буквенно-цифровых символов, пробелов или знаков пропуска. Черта должна идти сначала в скобках класса.
Вторая группа допускает ноль или более повторений с разделительными запятыми. Он заключен в неконвертируемые круглые скобки, небольшая оптимизация производительности: (?: … )*
Примечания:
A,B,,D
. Если вы не хотите этого допускать, измените второй-последний *
на +
. \w
позволяет подчеркнуть. Чтобы предотвратить это, замените их на A-Za-z0-9
.