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.

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)).



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]+$/;
}

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"

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, ' ')

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.