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
globalbandera
/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*.