Регулярное выражение Javascript Удалить места
Итак, я пишу маленький плагин для JQuery для удаления пробелов из строки. см. здесь
(function($) {
$.stripSpaces = function(str) {
var reg = new RegExp("[ ]+","g");
return str.replace(reg,"");
}
})(jQuery);
мое регулярное выражение в настоящее время [ ]+
для сбора всех пробелов.
Это работает. Однако это не оставляет хорошего вкуса во рту.
Я также пробовал [\s]+
и [\W]+
, но не работал.
Должен быть лучший (более сжатый) способ поиска только пробелов.
Ответы
Ответ 1
Я бы порекомендовал вам использовать буквенную нотацию и использовать класс символов \s
:
//..
return str.replace(/\s/g, '');
//..
Существует разница между использованием символьного класса \s
и просто ' '
, это будет соответствовать многим другим символам пробела, например '\t\r\n'
и т.д., ища ' '
заменит только ASCII 32 пустое пространство.
Конструктор RegExp
полезен, когда вы хотите построить динамический шаблон, в этом случае он вам не нужен.
Кроме того, как вы сказали, "[\s]+"
не работал с конструктором RegExp
, потому что вы передаете строку, и вы должны "удвоить escape" обратные косые черты, иначе они будут интерпретироваться как символ (например: "\s" === "s"
(неизвестный escape)).
Ответ 2
"foo is bar".replace(/ /g, '')
Ответ 3
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]+$/;
}
Ответ 4
Удалить все пробелы в строке
// 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"
Ответ 5
В производстве и работает через разрывы строк
Это используется в нескольких приложениях для очистки созданного пользователем содержимого, удаляя лишние пробелы/возвраты и т.д., Но сохраняет значение пробелов.
text.replace(/[\n\r\s\t]+/g, ' ')
Ответ 6
Это работает так же хорошо: http://jsfiddle.net/maniator/ge59E/3/
var reg = new RegExp(" ","g"); //<< just look for a space.