Porqué ocurre esto en JavaScript:
const a = ' ';
const r = /\s+/gm;
const b = r.test(a);
const c = r.test(a);
const d = r.test(a);
const e = r.test(a);
const f = r.test(a);
console.log(b, c, d, e, f)
-> true false true false true
en vez de:
-> true true true true true
Me temo que es culpa del modificador "g". Si lo quitas, verás que obtienes el resultado esperable, porque la búsqueda se reinicia desde el principio cada vez.
Si dejas en ese modificador, tras el primer espacio (true) se acaba la cadena y no hay más espacios (false), así que vuelve a recolocarse al principio, y vuelve a encontrar un espacio (true) y así sucesivamente.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)