^[^,][-,_\w\d]+[^,]$
Такое регулярное выражение не учитывает один момент: «слова» из разрешенного набора символов могут отделяться двумя и более запятыми, что в свою очередь нарушает логику программы (в дальнейшем эти данные разделяются по «,» на массив, и если не сделать проверку, то он будет содержать пустые элементы).