2009-07-22 71 views
7

Tôi đang tìm một regex javascript cho khoảng trắng. Tôi đang kiểm tra một số chuỗi khác nhau trong một vòng lặp và tôi cần xác định vị trí các chuỗi có khoảng trắng lớn trong chúng.javascript regex cho khoảng trắng hoặc  

Chuỗi khoảng trắng được xây dựng trong một vòng lặp, như thế này ...

xin vui lòng đọc mã này như var whitespace = " " sau đó vòng lặp chỉ concats không gian phá vỡ không thêm về nó.

var whitespace = " " 

     for (var x = 0; x < 20; x++) { 
      whitespace += "&nbsp;" 
     } 

sau đó nó được sử dụng sau này trong một chuỗi ký tự.

sometext += whitespace + someData; 

Tôi cần xác định các chuỗi có khoảng trắng (20 dấu cách).

Hoặc tôi chỉ nên thực hiện một contains(whitespace) hoặc một cái gì đó tương tự.

Mọi trợ giúp đều được đánh giá cao.

Chúc mừng, ~ ck ở San Diego

Trả lời

1

Nếu bạn đã xác định khoảng trắng như 20 không gian, bạn có thể làm

var input = whitespace + someData; 
if(input.indexOf(whitespace) != -1) 
{ 
    //input contains whitespace. 
} 

Không có nhu cầu sử dụng regex khi bạn có thể làm mà không có nó.

+0

Cảm ơn Yogi !! Nhân tiện, làm thế nào để bạn có được câu hỏi của tôi quá nhanh? Bất cứ khi nào tôi hỏi một câu hỏi regex, bạn trả lời nó rất nhanh. Có liên quan đến twitter hay gì đó không? Tôi chỉ là tò mò thôi. ~ ck – Hcabnettek

+0

Có một nguồn cấp dữ liệu câu hỏi về SO. Chỉ cần thiết lập trình đọc RSS của bạn. :-) –

+0

Tôi nhận được email bất cứ khi nào bạn đăng câu hỏi! ;) Chỉ đùa thôi. Tôi đăng nhập vào SO vài giờ một lần và xem có bất kỳ câu hỏi nào mà tôi có thể trả lời hay không. – SolutionYogi

32

Đối với câu hỏi cụ thể này, Yogi là chính xác - bạn không cần regex và bạn có thể tốt hơn mà không có nó.

Để tham khảo trong tương lai, nếu có ai khác đến tìm, regex có một nhân vật đặc biệt cho khoảng trắng:

\s 

Trong JS cách nói (nơi literals regex có thể được kèm theo trong dấu gạch chéo) nếu bạn đang tìm kiếm 20 không gian (không phải tab, dòng nguồn cấp dữ liệu, vv), bạn có thể làm điều này:

/ {20}/ 

bạn cũng sẽ muốn lưu ý rằng nhiều công cụ trình duyệt regex không xem xét các Non-Breaking Space là khoảng trắng. Các đại diện unicode cho nhân vật nbsp là:

\u00A0 

kết hợp, tìm kiếm bất kỳ sự kết hợp của 20 ký tự khoảng trắng (bao gồm các tab, vv) HOẶC NBSPs liên tiếp (dấu ngoặc vuông biểu thị một 'lớp nhân vật'):

/[\s\u00A0]{20}/ 

EDIT: Kết hợp thomas' điểm về nbsp. Đưa ra bình luận của mình và/hoặc trả lời một cuộc bỏ phiếu nếu bạn muốn - tôi biết tôi có.

+1

người ta có thể nghĩ như vậy, nhưng thực sự điều này chỉ đơn giản là sai đối với quá nhiều trình duyệt. – citykid

+1

Brilliant! Điểm mã unicode cho NBSP là chính xác những gì tôi đang tìm kiếm. Điều này rất hữu ích khi ngắt chuỗi thành các từ: 'sentence.split (/ [\ s \ u00A0] + /)'. – thure

0

Đối với IE (tôi đã thử nghiệm trong IE7), \s không khớp với &nbsp; nhưng Chrome và Firefox thì có. Vì vậy, nếu bạn muốn loại bỏ các khoảng trắng nhưng không phải là &nbsp; (không có khoảng trống), không sử dụng \s vì nó không phải là trình duyệt an toàn.

Ví dụ, bạn muốn loại bỏ tất cả các không gian trắng bao gồm \ n \ t nhưng không &nbsp;, bạn có thể sử dụng \n \t và không gian màu trắng, đó là: str.replace(/[\t \n]+/g, "")

Các vấn đề liên quan