2013-04-16 15 views
7

Sembra abbastanza semplice, ma non riesco a capire perché questo codice javascript non funzioni restituendo false, quando mi aspetto true) - Immagino che debba fare qualcosa con i caratteri di escape? Qualcuno potrebbe aiutarmi a scrivere un blocco JS che restituirà true se sono presenti spazi bianchi?Regex per verificare se sono presenti spazi bianchi?

var inValid = new RegExp("[\s]"); 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 

risposta

15

Non è necessario le staffe, si avrebbe bisogno di fuggire la barra retroversa (se si utilizza il modulo stringa) e la sintassi regex integrata è più semplice perché non è necessario eseguire il escape delle barre retroverse quando si utilizza la sintassi regex integrata.

var inValid = /\s/; 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 
3

avete bisogno di sfuggire alla barra rovesciata se si sta creando l'oggetto RegExp da una stringa letterale:

var inValid = new RegExp("[\\s]"); 

In alternativa si può semplicemente utilizzare il seguente:

var inValid = /\s/; 

Questo utilizza un espressione regolare letterale in modo che la fuga del backslash non sia necessaria, e non c'è bisogno della classe di caratteri qui, così ho lasciato cadere anche le parentesi quadre.

3

Hai bisogno di un carattere di escape doppio:

uno per la "s" e uno per la "\" stessa:

var inValid = new RegExp("[\\s]"); 
3

Se si desidera far corrispondere qualcosa lì, ma nessuno spazio bianco:

alert(/^\S+$/.test(value)); 
Problemi correlati