Estoy tratando de verificar si una cadena tiene espacios en blanco . Encontré esta función pero no parece estar funcionando:
function hasWhiteSpace(s)
{
var reWhiteSpace = new RegExp("/^\s+$/");
// Check for white space
if (reWhiteSpace.test(s)) {
//alert("Please Check Your Fields For Spaces");
return false;
}
return true;
}
Por cierto, agregué citas a RegExp
.
¿Hay algo mal? ¿Hay algo mejor que pueda usar? Con suerte, JQuery.
javascript
whitespace
Abdominales
fuente
fuente
Respuestas:
Simplemente puede usar el método indexOf en la cadena de entrada:
O puede usar el método de prueba, en una expresión regular simple:
Esto también buscará otros caracteres de espacio en blanco como Tab.
fuente
Su expresión regular no coincidirá con nada, tal como está. Definitivamente necesitas eliminar las comillas, los
"/"
caracteres son suficientes./^\s+$/
está comprobando si la cadena es TODOS los espacios en blanco:^
coincide con el inicio de la cadena.\s+
significa al menos 1, posiblemente más, espacios.$
coincide con el final de la cadena.Intente reemplazar la expresión regular con
/\s/
(y sin comillas)fuente
Esta función busca otros tipos de espacios en blanco, no solo el espacio (tabulación, retorno de carro, etc.)
Si no desea utilizar Lodash , aquí hay una
some
implementación simple con 2s
:Luego simplemente reemplácelo
some
conssome
.Para aquellos en Node, use:
fuente
Aquí está mi validación sugerida:
fuente
Un enfoque simple que podría tomar es comparar la longitud de la cadena original con la de la cadena para reemplazar los espacios en blanco con nada. Por ejemplo:
fuente
Con adiciones al idioma es mucho más fácil, además puedes aprovechar la devolución anticipada:
No ejecuté pruebas comparativas de rendimiento, pero deberían ser más rápidas que las expresiones regulares, pero para los fragmentos de texto pequeños no habrá mucha diferencia de todos modos.
fuente
Algunos otros han publicado respuestas. Hay algunos problemas obvios, como que regresa
false
cuando la expresión regular pasa, y los operadores^
y$
indican inicio / fin, mientras que la pregunta que se busca tiene (cualquier) espacio en blanco, y no: solo contiene espacios en blanco (que la expresión regular está verificando).Además de eso, el problema es solo un error tipográfico.
Cambia esto...
A esto...
Cuando use una expresión regular dentro
RegExp()
, debe hacer las dos cosas siguientes .../
corchetes de inicio y finalización .\\s
en lugar de\s
, etc.Demostración de trabajo completa desde el código fuente ...
fuente