2010-01-08 70 views

Trả lời

225

Thay vì kiểm tra toàn bộ chuỗi để xem nếu chỉ có khoảng trắng, chỉ cần kiểm tra để xem nếu có ít nhất một nhân vật của phi khoảng trắng:

if (/\S/.test(myString)) { 
    // string is not empty and not just whitespace 
} 
+8

+1 Đây là câu trả lời hay hơn tôi, mặc dù có lẽ không rõ ràng khi bạn quay lại một tháng sau đó! –

+8

Đó là ý kiến ​​cho :) – AntonioCS

+2

Chỉ cần cẩn thận với myString là giá trị null. Nó sẽ trả về true: /\S/.test(null) == true –

6

Chỉ cần kiểm tra các chuỗi với regex này:

if(mystring.match(/^\s+$/) === null) { 
    alert("String is good"); 
} else { 
    alert("String contains only whitespace"); 
} 
+0

này sẽ chỉ kiểm tra xem chuỗi chứa * chỉ * ký tự khoảng trắng, nhưng không nếu nó chứa bất kỳ * * khoảng trắng, như được yêu cầu. – stakx

+1

Cách tôi đọc câu hỏi, được cho là/any/khoảng trắng được cho phép, miễn là chuỗi không phải là/only/khoảng trắng. Đó là im lặng về những gì cần làm nếu chuỗi là trống rỗng, vì vậy nó có thể là câu trả lời của nickf vẫn còn tốt hơn. –

26
if (/^\s+$/.test(myString)) 
{ 
     //string contains only whitespace 
} 

kiểm tra này cho 1 hoặc nhiều ký tự khoảng trắng, nếu bạn để nó cũng phù hợp với một chuỗi rỗng sau đó thay thế + với *.

+0

đã đánh cắp câu trả lời của tôi. +1 – Triptych

+0

Tôi thích câu trả lời này vì nó kiểm tra những gì chúng tôi muốn thử nghiệm, và không vượt qua mọi thứ khác. Các điều kiện như vậy phù hợp với bên trong nếu bạn đã có sẵn trường hợp khác hoặc nếu chuyển đổi. –

1
if (!myString.replace(/^\s+|\s+$/g,"")) 
    alert('string is only whitespace'); 
0

Các biểu hiện thường xuyên tôi đã kết thúc bằng khi tôi muốn cho phép khoảng trống ở giữa chuỗi của tôi, nhưng không phải ở đầu hoặc cuối là:

[\S]+(\s[\S]+)* 

hoặc

^[\S]+(\s[\S]+)*$ 

Vì vậy, tôi biết đây là một câu hỏi cũ, nhưng bạn có thể làm điều gì đó như:

if (/^\s+$/.test(myString)) { 
    //string contains characters and white spaces 
} 

hoặc bạn có thể làm những gì nickf nói và sử dụng:

if (/\S/.test(myString)) { 
    // string is not empty and not just whitespace 
} 
16

Vâng, nếu bạn đang sử dụng jQuery, nó đơn giản hơn.

if ($.trim(val).length === 0){ 
    // string is invalid 
} 
+2

Nhanh hơn hoặc đơn giản hơn? – 2rs2ts

+1

Làm việc cho dòng mới và tab quá, trong khi các ví dụ regex ở trên không như chúng chỉ tìm kiếm sự vắng mặt của bất cứ điều gì nhưng không gian màu trắng. Mặc dù, tôi chắc rằng ai đó với một số kiến ​​thức regex có thể tạo ra một regex mà cũng sẽ bao gồm tab/newline trong tìm kiếm. – Kate

+0

không hoạt động khi val được gán khoảng trống, trong trường hợp của tôi là bốn dấu cách. – user1451111

8

câu trả lời đơn giản nhất nếu trình duyệt của bạn hỗ trợ trim() chức năng

if (myString && !myString.trim()) { 
    //First condition to check if string is not empty 
    //Second condition checks if string contains just whitespace 
} 
Các vấn đề liên quan