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.testmé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