Javascript Regular Expression Hapus Spasi

90

Jadi saya menulis plugin kecil kecil untuk JQuery untuk menghapus spasi dari string. Lihat disini

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

ekspresi reguler saya saat ini adalah [ ]+mengumpulkan semua spasi. Ini berhasil .. namun tidak meninggalkan rasa yang enak di mulut saya .. Saya juga mencoba [\s]+dan [\W]+tidak berhasil ..

Harus ada cara yang lebih baik (lebih ringkas) untuk mencari spasi saja.

rlemon
sumber

Jawaban:

231

Saya akan merekomendasikan Anda menggunakan notasi literal, dan \skelas karakter:

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

Ada perbedaan antara menggunakan kelas karakter \sdan hanya ' ', ini akan mencocokkan lebih banyak karakter spasi, misalnya '\t\r\n'dll .., mencari ' 'hanya akan mengganti spasi kosong ASCII 32.

The RegExpkonstruktor berguna bila Anda ingin membangun pola dinamis, dalam hal ini Anda tidak membutuhkannya.

Selain itu, seperti yang Anda katakan, "[\s]+"tidak bekerja dengan RegExpkonstruktor, itu karena Anda meneruskan string, dan Anda harus "meloloskan diri dua kali" dari garis miring belakang, jika tidak, garis miring tersebut akan ditafsirkan sebagai karakter lolos di dalam string (mis: "\s" === "s"(tidak diketahui melarikan diri)).

Christian C. Salvadó
sumber
14
"foo is bar".replace(/ /g, '')
Briggs tebusan
sumber
1
str.replace(/\s/g,'')

Bekerja untuk saya.

jQuery.trim memiliki peretasan berikut untuk IE, meskipun saya tidak yakin versi apa yang terpengaruh:

// 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]+$/;
}
Stefan Kendall
sumber
1

Hapus semua spasi dalam string

// 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"
DarckBlezzer
sumber
1

Dalam produksi dan bekerja melintasi jeda baris

Ini digunakan di beberapa aplikasi untuk membersihkan konten yang dibuat pengguna, menghapus spasi / pengembalian ekstra, dll, tetapi tetap mempertahankan arti spasi.

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