Javascript Normal İfade Boşlukları Kaldır


90

Bu yüzden JQuery'nin bir dizeden boşlukları kaldırması için küçük bir eklenti yazıyorum. buraya bakın

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

benim normal ifadem şu anda [ ]+tüm boşlukları toplamak. Bu çalışmalar .. ancak artık .. ağzımda güzel bir tat bırakmaz Ben de denedim [\s]+ve [\W]+ancak hiçbiri çalıştı ..

Sadece boşlukları aramanın daha iyi (daha özlü) bir yolu olmalı.

Yanıtlar:


231

Birebir gösterimi ve \skarakter sınıfını kullanmanızı tavsiye ederim :

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

Karakter sınıfını kullanma arasında bir fark vardır \sve sadece ' 'bu örneğin, çok daha fazla beyaz boşluk karakteri maç olacak '\t\r\n'vs .., arayan ' 'yalnızca ASCII 32 boşluk yerini alacak.

RegExpEğer istediğiniz zaman yapıcı yararlıdır inşa sen buna ihtiyacı yoktur, bu durumda dinamik bir model.

Dahası, söylediğiniz gibi kurucu "[\s]+"ile çalışmadı RegExp, çünkü bir dizeyi iletiyorsunuz ve ters eğik çizgilerden "çift kaçış" yapmanız gerekir, aksi takdirde dizge içindeki karakter kaçışları olarak yorumlanacaktır (örn: "\s" === "s"(bilinmeyen kaçış)).



1
str.replace(/\s/g,'')

Benim için çalışıyor.

jQuery.trim IE için şu hack'e sahip, ancak hangi sürümleri etkilediğinden emin değilim:

// 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

Dizedeki tüm boşlukları kaldır

// 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

Üretimde ve hat sonlarında çalışıyor

Bu, kullanıcı tarafından oluşturulan içeriği, fazladan boşlukları / dönüşleri vb. Kaldırarak temizlemek için birkaç uygulamada kullanılır, ancak boşlukların anlamını korur.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.