2009-07-23 12 views

risposta

31

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

Modificare il +-* per includere la stringa vuota '' come un riscontro positivo.

Modifica

Più spesso però è necessario tagliare gli spazi bianchi da testo inserito dall'utente e semplicemente verificare se si tratta di non-vuoto:

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 */è più veloce di/^ \ s +/ – James

+0

Correggetemi se ho torto, ma la seguente non è la stessa della doppia sostituzione? x.replace (/^\s*(.*?)\s*$/, '$ 1'); – coderjoe

7

... Ti piace questa

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

Se si desidera vedere se un file contiene tutto lo spazio vuoto o è vuoto, si consiglia di testare l'inversione e invertire il risultato. In questo modo non devi preoccuparti di casi speciali attorno alla stringa vuota.

tutti gli spazi è lo stesso di no non spazi così:

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

Se non si desidera che le stringhe vuote è possibile modificare leggermente:

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

Quando ho letto la regex ho letto: "Controlla la stringa che inizia con spazi bianchi", ma come mai funziona quando digiti "abc"? –

+0

Stai leggendo l'espressione regolare in modo errato. [^ \ s] significa qualsiasi carattere che non è uno spazio bianco. – coderjoe

81

Questa domanda è codificata con jQuery . In jQuery, è possibile eseguire il seguente:

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

Questo funziona anche:

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

Questo non funziona in tutti i browser. Vedi la risposta di MacAnthony. – shakerlxxv

+0

Interessante sarebbe sapere se questo è più veloce o se la soluzione regex è più veloce. – Devid

+0

Non sono sicuro su quale browser non funzioni (sarei curioso) ma ho appena eseguito il test in Chrome (62.0.3202.94), Firefox (59.0) e Safari (11.0.1) e funziona con quelli. –

3

risposta di Josh è molto vicino a questo, ma secondo w3schools (a maggio 2014), è la seguente:

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

Qualcosa che ha funzionato per me:

$("#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

Per trovare spazi generati da JavaScript e tra gli elementi usare:

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

if (trimmed === ''){ 
    //function... 
} 
Problemi correlati