Puedo construir expresiones regulares para el inicio y el final.
(^[,\s]+)|([,\s]+$)
Pero no sé cómo negarlo, debería buscar comas que no sean iniciales ni finales.
Y no debe contener comas dobles o más (cerca una de la otra) en el medio.
// example - should return following values 1. "orange" - true 2. "apple, orange" - true 3. "apple, orange" - true 4. "apple,orange" - true 5. "apple, orange," - false 6. ",orange, apple" - false 8. "orange,, apple" - false 9. "apple,,orange" - falseCualquiera aquí sabe cómo lograrlo. Gracias
Simplemente usaría este patrón general:
^[^,]+(?:\s*,\s*[^,]+)*$Esto coincidirá con un término inicial, que no contenga comas, seguido de cero o más comas y luego términos que no sean comas.
Código JavaScript:
var inputs = ["orange", "apple, orange", "apple, orange", "apple,orange", "apple, orange,", ",orange, apple", "orange,, apple", "apple,,orange"]; for (var i=0; i < inputs.length; ++i) { console.log(inputs[i] + " => " + /^[^,]+(?:\s*,\s*[^,]+)*$/.test(inputs[i])); }Puede verificar si la cadena no coincide con este patrón básico:
^\s*,|,\s*,|,\s*$Vea la demostración en regex101 o la demostración de JS en tio.run