Solución:
Lo que estás buscando es engañosamente fácil:
[^,]+
Esto le dará cada token separado por comas y excluirá los tokens vacíos (si el usuario ingresa “a ,, b”, solo obtendrá ‘a’ y ‘b’), PERO se romperá si ingresa “a,, B”.
Si desea eliminar los espacios de cualquier lado correctamente (y excluir solo los elementos de espacio en blanco), entonces se vuelve un poco más complicado:
[^,s][^,]*[^,s]*
Sin embargo, como se ha mencionado en algunos de los comentarios, ¿por qué necesita una expresión regular en la que una simple división y recorte funcionará?
Suponiendo que las palabras en su lista pueden ser letras de la a a la z y usted permite, pero no requiere, un espacio después de los separadores de coma, su reg exp sería
[a-z]+ (, s *[a-z]+) *
Esto coincide con “ab” o “ab, de”, pero no con “ab, dc”
Este hilo tiene casi 7 años y estuvo activo por última vez hace 5 meses, pero quería lograr los mismos resultados que OP y después de leer este hilo, encontré una solución ingeniosa que parece funcionar bien
.match(/[^,s?]+/g)
Aquí hay una imagen con un código de ejemplo de cómo lo estoy usando y cómo está funcionando
Con respecto a la expresión regular … supongo que una declaración más precisa sería decir “apunte a cualquier cosa que NO sea una coma seguida de una cantidad (opcional) de espacio en blanco”.