Câu trả lời:
Thay vì kiểm tra toàn bộ chuỗi để xem có chỉ khoảng trắng hay không, chỉ cần kiểm tra xem có ít nhất một ký tự của khoảng trắng không :
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
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
}
if (/^\s+$/.test(myString))
{
//string contains only whitespace
}
cái này kiểm tra 1 hoặc nhiều ký tự khoảng trắng, nếu bạn cũng khớp với một chuỗi trống thì thay thế +
bằng *
.
Chà, nếu bạn đang sử dụng jQuery, nó đơn giản hơn.
if ($.trim(val).length === 0){
// string is invalid
}
Chỉ cần kiểm tra chuỗi dựa trên regex này:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
Biểu thức chính quy tôi đã sử dụng khi tôi muốn cho phép khoảng trắng ở giữa chuỗi của mình, nhưng không phải ở đầu hoặc cuối là:
[\S]+(\s[\S]+)*
hoặc là
^[\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 một cái 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
}
Tôi đã sử dụng phương pháp sau để phát hiện nếu một chuỗi chỉ chứa khoảng trắng. Nó cũng phù hợp với chuỗi trống.
if (/^\s*$/.test(myStr)) {
// the string contains only whitespace
}
Đây có thể là giải pháp nhanh chóng
return input < "\u0020" + 1;
return input < " 1";
mà chỉ là so sánh theo thứ tự abc. Miễn là đầu vào được sắp xếp thấp hơn "1", nó sẽ trả về đúng. Ví dụ: return " asdfv34562345" < "\u0020" + 1;
đánh giá là đúng.