Регулярное Выражение Javascript Удаление Пробелов



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



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


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



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

613   4  

4 ответов:

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

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

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

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

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

"foo is bar".replace(/ /g, '')
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]+$/;
}

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

var reg = new RegExp(" ","g"); //<< just look for a space.

Comments

    Ничего не найдено.