Intentando comparar la entrada con una expresión regular.
El campo solo debe permitir caracteres alfanuméricos, guiones y guiones bajos y NO debe permitir espacios.
Sin embargo, el código siguiente permite espacios.
¿Qué me estoy perdiendo?
var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
{ alert('invalid'); }
else
{ alert('valid'); }
javascript
regex
Tom
fuente
fuente
Respuestas:
No, no es así. Sin embargo, solo coincidirá en la entrada con una longitud de 1. Para las entradas con una longitud mayor o igual a 1, necesita
+
seguir la clase de carácter:var regexp = /^[a-zA-Z0-9-_]+$/; var check = "checkme"; if (check.search(regexp) === -1) { alert('invalid'); } else { alert('valid'); }
Tenga en cuenta que ni el
-
(en este caso) ni la_
necesidad de escapar.fuente
No debe usar String.match sino RegExp.prototype.test (ie
/abc/.test("abcd")
) en lugar de String.search () si solo está interesado en un valor booleano. También debe repetir su clase de personaje como se explica en la respuesta de Andy E:var regexp = /^[a-zA-Z0-9-_]+$/;
fuente
RegExp.prototype.test
método si solo está interesado en un booleano.Esta sintaxis es un poco más concisa que las respuestas que se han publicado hasta este punto y logra el mismo resultado:
let regex = /^[\w-]+$/;
fuente
Tengo un error estúpido. Así que publique aquí, si alguien lo encuentra útil.
-\._
- significa guión, punto y subrayado\.-_
- significa todos los signos en el rango de punto a subrayadofuente
No escapes del subrayado. Podría estar causando alguna locura.
fuente
\_
causar problemas, en JavaScript o en cualquier otro tipo de expresión regular.Prueba esto
"[A-Za-z0-9_-]+"
Debe permitir guiones bajos y guiones
fuente
prueba este, funciona bien para mí.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
fuente