Регулярний вираз Javascript Видалити пробіли


89

Тож я пишу маленький маленький плагін для JQuery, щоб видалити пробіли з рядка. дивіться тут

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

в даний час моє регулярне вираження - [ ]+збирати всі пробіли. Це працює .. Це , однак, не залишає хороший смак в роті .. Я теж спробував [\s]+і , [\W]+але не працював ..

Повинен бути кращий (більш стислий) спосіб пошуку лише пробілів.

Відповіді:


229

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

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

Існує різниця між використанням класу символів \sі просто ' ', це збігатиметься з набагато більшими пробілами, наприклад '\t\r\n'і т.д .., шукаючи ' 'замінить лише порожній простір ASCII 32.

RegExpКонструктор корисний , коли ви хочете , щоб побудувати динамічну картину, в цьому випадку вам не потрібно.

Більше того, як ви вже сказали, "[\s]+"не працював з RegExpконструктором, це тому, що ви передаєте рядок, і вам слід "подвоїти" зворотні скісні риски, інакше вони будуть інтерпретовані як символи, що входять у рядок (наприклад: "\s" === "s"(невідомо Втеча)).



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"

1

У виробництві і працює через перерви рядків

Це використовується в декількох програмах для очищення створеного користувачем вмісту, видаляючи зайвий інтервал / повернення тощо, але зберігає значення пробілів.

text.replace(/[\n\r\s\t]+/g, ' ')

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.