2011-08-22 17 views
55

JQuery için bir dize boşluklarını kaldırmak için küçük bir küçük eklenti yazıyorum. see hereJavascript Düzenli İfade Çıkarma Boşlukları Kaldır

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

benim düzenli ifade tüm boşlukları toplamak için şu anda [ ]+ olduğunu. .. Bu işler .. ancak artık .. ağzımda güzel bir tat bırakmaz Ben de [\s]+ ve [\W]+ denedik ama hiçbiri çalıştı

sadece ararken daha iyi (daha özlü) yolu olmalı

alanlarda.

cevap

141

: Ben nelerin etkilediğini versiyonları emin değilim ancak

jQuery.trim, IE için aşağıdaki hack sahiptir: karakter sınıfını \s ve sadece ' ' kullanarak arasında bir fark var

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

, bu '\t\r\n' vb. gibi daha fazla beyaz boşluk karakteriyle eşleşecek, ' ''u arayarak sadece ASCII 32 boşluğunun yerini alacaktır. Eğer yapı sen buna ihtiyacı yoktur, bu durumda dinamik model, istediğinizde

RegExp yapıcı yararlıdır.

Üstelik dediğin gibi "[\s]+" bir dize geçiyoruz nedeni de, ve karakter içine kaçar gibi "çift kaçış" arka-eğik çizgi, aksi halde yorumlanır gerektiğini RegExp yapıcı ile çalıştı vermedi dize (örn .: "\s" === "s" (bilinmeyen kaçış)).

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

Works benim için. Sana değişmezi gösterimi kullanmayı tavsiye ve \s karakter sınıfını kullanarak ediyorum

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