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

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

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

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

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

68 голосов | спросил rlemon 22 PM00000090000000731 2011, 21:28:07

6 ответов


0

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

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

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

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

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

ответил CMS 22 PM00000090000000931 2011, 21:34:09
0
"foo is bar".replace(/ /g, '')
ответил Ransom Briggs 22 PM00000090000002231 2011, 21:31:22
0
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]+$/;
}
ответил Stefan Kendall 22 PM00000090000002031 2011, 21:31:20
0

Это работает так же хорошо: http://jsfiddle.net/maniator/ge59E/3/

var reg = new RegExp(" ","g"); //<< just look for a space.
ответил Neal 22 PM00000090000005331 2011, 21:29:53
0

В производстве

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

text.replace(/[\n\r\s\t]+/g, ' ')
ответил Jason Sebring 13 Jpm1000000pmSun, 13 Jan 2019 19:28:10 +030019 2019, 19:28:10
0

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

// 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 12 WedEurope/Moscow2018-12-12T23:57:23+03:00Europe/Moscow12bEurope/MoscowWed, 12 Dec 2018 23:57:23 +0300 2018, 23:57:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132