Respuesta corta: use m = s.match(/[^ ,]/g);
Su RE no funciona como se esperaba, porque el último grupo coincide con la coincidencia más reciente (=
c
). Si omite
{1,}$
, la coincidencia devuelta será
" a , b ", "a", "b"
. En resumen, su RegExp devuelve tantas coincidencias como grupos especificados a
menos que use una
global
bandera
/g
. En este caso, la lista devuelta contiene referencias a todas las subcadenas coincidentes.
Para lograr su efecto, use:
m = s.replace(/\s*(,|^|$)\s*/g, "$1");
Este reemplazo reemplaza cada coma ( ,
), comienzo ( ^
) y final ( $
), rodeado por espacios en blanco, por el carácter original ( comma
, o nada).
Si desea obtener una matriz, use:
m = s.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/);
Este RE recorta la cadena (elimina todos los espacios en blanco al principio y al final, luego divide la cadena por <any whitespace>,<any whitespace>
. Tenga en cuenta que los caracteres de espacio en blanco también incluyen nuevas líneas y tabulaciones. Si desea ceñirse solo a los espacios, use un espacio (
) en lugar de \s
.
{0,}
es lo mismo que*
.