Javascript Biểu thức chính quy Loại bỏ khoảng trắng


89

Vì vậy, tôi đang viết một plugin nhỏ nhỏ cho JQuery để xóa khoảng trắng khỏi một chuỗi. xem ở đây

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

biểu thức chính quy của tôi hiện là [ ]+để thu thập tất cả các khoảng trắng. Công trình này .. Tuy nhiên nó không để lại một hương vị tốt trong miệng của tôi .. Tôi cũng đã cố gắng [\s]+[\W]+nhưng không làm việc ..

Phải có một cách tốt hơn (ngắn gọn hơn) để chỉ tìm kiếm khoảng trắng.

Câu trả lời:


229

Tôi khuyên bạn nên sử dụng ký hiệu chữ và \slớp ký tự:

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

Có sự khác biệt giữa việc sử dụng lớp ký tự \svà chỉ ' ', điều này sẽ phù hợp với nhiều ký tự khoảng trắng hơn, ví dụ, '\t\r\n'v.v., tìm kiếm ' 'sẽ chỉ thay thế khoảng trống ASCII 32.

Hàm RegExptạo rất hữu ích khi bạn muốn xây dựng một mẫu động, trong trường hợp này bạn không cần nó.

Hơn nữa, như bạn đã nói, "[\s]+"không hoạt động với hàm RegExptạo, đó là bởi vì bạn đang truyền một chuỗi và bạn nên "thoát kép" các dấu gạch chéo ngược, nếu không chúng sẽ được hiểu là ký tự thoát bên trong chuỗi (ví dụ: "\s" === "s"(không xác định bỏ trốn)).



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

Làm việc cho tôi.

jQuery.trim có bản hack sau cho IE, mặc dù tôi không chắc nó ảnh hưởng đến những phiên bản nào:

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

Xóa tất cả khoảng trắng trong chuỗi

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

Trong quá trình sản xuất và làm việc ngang hàng

Điều này được sử dụng trong một số ứng dụng để làm sạch nội dung do người dùng tạo, loại bỏ khoảng cách thừa / trả về, v.v. nhưng vẫn giữ được ý nghĩa của dấu cách.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.