2010-01-08 32 views

Respuesta

225

En lugar de verificar toda la cadena para ver si sólo hay un espacio en blanco, simplemente comprobar para ver si hay al menos un carácter de no espacios en blanco:

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

+1 Esta es una respuesta mejor que la mía, ¡aunque tal vez no sea tan clara cuando regrese un mes después! –

+8

Eso es lo que comentan :) – AntonioCS

+2

Solo tenga cuidado con myString para que sea un valor nulo. Volverá true: /\S/.test(null) == true –

6

simplemente marque la cadena contra esta expresión regular:

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

Esto sólo se comprobará si la cadena contiene caracteres * * Sólo espacios en blanco, pero no si contiene * cualquier * espacios en blanco, como se le pidió. – stakx

+1

La forma en que leo la pregunta, dice que/any/whitespace está permitido, siempre que la cadena no sea/only/whitespace. No dice nada sobre qué hacer si la cadena está vacía, por lo que puede ser que la respuesta del nickf sea aún mejor. –

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

esta cheques por 1 o más espacios en blanco, si lo permite igualar también una cadena vacía luego vuelva a colocar + con *.

+0

robó mi respuesta. +1 – Triptych

+0

Me gusta esta respuesta porque prueba lo que queremos probar y no pasa todo lo demás. Estas condiciones caben dentro si ya tiene else-if o switch-case en su lugar. –

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

La expresión regular que terminé usando para cuando quiero para permitir espacios en el medio de mi cadena, pero no al principio o al final fue la siguiente:

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

o

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

Por lo tanto, sé que esto es una cuestión de edad, pero se podría hacer algo como:

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

o se puede hacer lo nickf dicho y uso:

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

Bueno, si usas jQuery, es más simple.

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

¿Más rápido o simplemente más simple? – 2rs2ts

+1

También funciona para nuevas líneas y pestañas, mientras que los ejemplos de expresiones regulares anteriores no lo hacen, ya que solo buscan la ausencia de algo más que espacios en blanco. Aunque, estoy seguro de que alguien con algunos conocimientos regex podría crear una expresión regular que también incluiría tab/newline en la búsqueda. – Kate

+0

no funciona cuando se le asignan espacios a val, en mi caso cuatro espacios. – user1451111

8

respuesta más simple si su navegador es compatible con la trim() función

if (myString && !myString.trim()) { 
    //First condition to check if string is not empty 
    //Second condition checks if string contains just whitespace 
} 
Cuestiones relacionadas