Регулярное выражение Javascript Удалить пробелы

89

Итак, я пишу крошечный плагин для JQuery для удаления пробелов из строки. глянь сюда

(function($) {
    $.stripSpaces = function(str) {
        var reg = new RegExp("[ ]+","g");
        return str.replace(reg,"");
    }
})(jQuery);

мое регулярное выражение в настоящее время [ ]+собирает все пробелы. Это работает .. Это , однако, не оставляет хороший вкус во рту .. Я тоже попробовал [\s]+и , [\W]+но ни работал ..

Должен быть лучший (более краткий) способ поиска только пробелов.

rlemon
источник

Ответы:

229

Я бы порекомендовал вам использовать буквальную нотацию и \sкласс символов:

//..
return str.replace(/\s/g, '');
//..

Существует разница между использованием класса символов \sи просто ' ', это будет соответствовать намного большему количеству символов пробела, например, и '\t\r\n'т.д., поиск ' 'заменит только пробел ASCII 32.

RegExpКонструктор полезен , когда вы хотите , чтобы построить динамическую картину, в этом случае вам не нужно.

Более того, как вы сказали, "[\s]+"не работает с RegExpконструктором, потому что вы передаете строку, и вам следует «дважды экранировать» обратные косые черты, иначе они будут интерпретироваться как экранирование символов внутри строки (например: "\s" === "s"(unknown побег)).

Кристиан К. Сальвадо
источник
1
str.replace(/\s/g,'')

Работает для меня.

jQuery.trim есть следующий хак для IE, хотя я не уверен, на какие версии он влияет:

// Check if a string has a non-whitespace character in it
rnotwhite = /\S/

// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
    trimLeft = /^[\s\xA0]+/;
    trimRight = /[\s\xA0]+$/;
}
Стефан Кендалл
источник
1

Удалить все пробелы в строке

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"
DarckBlezzer
источник
1

В производстве и работает через разрывы строк

Это используется в нескольких приложениях для очистки пользовательского контента, удаляя лишние пробелы / возвраты и т. Д., Но сохраняет значение пробелов.

text.replace(/[\n\r\s\t]+/g, ' ')
Джейсон Себринг
источник