Some types of " writeSpace
"
" " espaço simples - represente o " " espaço
\n - representa a quebra de linha
\r - representa o retorno de carro
\t - representa um tab
\v - representa um tab vertical (nunca vi, nem usei)
\f - representa o avanço de pagina
\s - engloba todos os demais
Some REGEX
/ {2,}/ - captura apenas dois ou mais espaços
/\n{2,}/ - captura apenas linhas duplas
/(\r\n){2,}/ - captura apenas linhas duplas, que possuam retorno de carro (alguns editores poem por padrão '\r\n' ao pressionar enter)
Your situation
PHP
$str = preg_replace('/( ){2,}/', '$1', $str);
JavaScript
str = str.replace(/( ){2,}/g, '$1');
Explanation
( ) - captura um espaço simples e gera um grupo
{2,} - quantifica um no minimo dois ao infinito
$1 - recupera o grupo