2009-07-23 21 views
49

Làm cách nào để kiểm tra xem văn bản nhập của người dùng có phải là tất cả các ký tự khoảng trắng (dấu cách, tab, nhập v.v.) ở phía máy khách?Làm cách nào để kiểm tra xem văn bản có phải tất cả các ký tự khoảng trắng ở phía máy khách không?

Cảm ơn trước!

+5

Nếu bạn không biết regex, hãy chuẩn bị đầu để phát nổ. –

+2

@GabRoyer, không phải với jQuery, nó sẽ không! Xem câu trả lời của MacAnthony bên dưới. –

Trả lời

31

/^\s+$/.test(userText)

Thay đổi +-* để bao gồm các chuỗi rỗng '' như một trận đấu tích cực.

Sửa

Thường xuyên hơn không mặc dù bạn cần phải cắt khoảng trắng từ văn bản do người dùng nhập vào và chỉ đơn giản là kiểm tra nếu nó không rỗng:

userText = userText.replace(/^\s+/, '').replace(/\s+$/, ''); 
if (userText === '') { 
    // text was all whitespace 
} else { 
    // text has real content, now free of leading/trailing whitespace 
} 
+0

FWIW/^ \ s \ s */nhanh hơn/^ \ s +/ – James

+0

Sửa tôi nếu tôi sai, nhưng không giống như thay thế kép? x.replace (/^\s*(.*?)\s*$/, '$ 1'); – coderjoe

7

Như thế này ...

function isEmpty(str) { 
    return str.replace(/^\s+|\s+$/g, '').length == 0; 
} 
5

Nếu bạn muốn xem tệp có chứa tất cả không gian trắng hoặc trống không, tôi khuyên bạn nên thử nghiệm đảo ngược và đảo ngược kết quả. Bằng cách đó bạn không cần phải lo lắng về các trường hợp đặc biệt xung quanh chuỗi rỗng.

tất cả khoảng trắng cũng giống như không có khoảng trắng không vậy:

function isWhitespaceOrEmpty(text) { 
    return !/[^\s]/.test(text); 
} 

Nếu bạn không muốn chuỗi rỗng, bạn có thể sửa đổi nó một chút:

function isWhitespaceNotEmpty(text) { 
    return text.length > 0 && !/[^\s]/.test(text); 
} 
+0

Khi tôi đọc regex tôi đọc: "Kiểm tra chuỗi bắt đầu với khoảng trắng", nhưng làm thế nào nó hoạt động khi bạn gõ "abc"? –

+0

Bạn đang đọc cụm từ thông dụng không chính xác. [^ \ s] có nghĩa là bất kỳ ký tự nào không phải là khoảng trắng. – coderjoe

81

Câu hỏi này được gắn thẻ với jQuery . Trong jQuery, bạn có thể chạy như sau:

if ($.trim($('#myInput').val()) == '') 
    alert('input is blank'); 
18

này cũng sẽ làm việc:

var text = " "; 
text.trim().length == 0; //true 
+0

Điều này không hoạt động trong tất cả các trình duyệt. Xem phản hồi của MacAnthony. – shakerlxxv

+0

Điều thú vị là phải biết nếu điều này nhanh hơn hay giải pháp regex nhanh hơn. – Devid

+0

Không chắc chắn trình duyệt nào không hoạt động (tôi tò mò) nhưng tôi chỉ thử nghiệm trong Chrome (62.0.3202.94), Firefox (59.0) và Safari (11.0.1) và nó hoạt động trong các trình duyệt đó. –

3

câu trả lời của Josh rất gần với điều này, nhưng theo w3schools (tháng 5 năm 2014) nó là như sau:

function isEmpty(str) { 
    return str.replace(/^\s+|\s+$/gm,'').length == 0; 
} 
0

Cái gì đó đã làm việc cho tôi:

$("#example_form").validate({ 
    rules: { 
     example_field: { 
      required: { 
       depends: function() { 
        $(this).val($.trim($(this).val())); 
        return true; 
       } 
      } 
     }, 

    }, 
    messages: { example_field: {required: "Custom Validation Message for example_field"}, } 
}); 
2

Để tìm khoảng trắng được tạo bởi JavaScript và giữa các phần tử, hãy sử dụng:

var trimmed = $.trim($('p').text()); 

if (trimmed === ''){ 
    //function... 
} 
Các vấn đề liên quan