2011-08-22 41 views
55

Vì vậy, tôi đang viết một plugin nhỏ bé để JQuery xóa không gian khỏi chuỗi. see hereBiểu thức chính quy Javascript Xóa không gian

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

Cụm từ thông dụng của tôi hiện là [ ]+ để thu thập tất cả các không gian. này hoạt động .. 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 ..

Cần phải có một tốt hơn (ngắn gọn hơn) cách tìm kiếm chỉ dành cho không gian.

Trả lời

141

tôi sẽ khuyên bạn nên sử dụng các ký hiệu chữ, và sử dụng các lớp \s nhân vật:

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

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

Phương thức khởi tạo RegExp hữu ích khi bạn muốn tạo 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 làm việc với các nhà xây dựng RegExp, đó là bởi vì bạn đang đi qua một chuỗi, và bạn nên "tăng gấp đôi thoát" các dấu gạch chéo ngược, nếu không họ sẽ được hiểu là ký tự thoát bên trong chuỗi (ví dụ: "\s" === "s" (thoát không xác định)).

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

trình cho tôi.

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

// 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, '') 
Các vấn đề liên quan