Tentando comparar a entrada com uma expressão regular.
O campo deve permitir apenas caracteres alfanuméricos, travessões e sublinhados e NÃO deve permitir espaços.
No entanto, o código abaixo permite espaços.
o que estou perdendo?
var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
{ alert('invalid'); }
else
{ alert('valid'); }
javascript
regex
Tom
fonte
fonte
Respostas:
Não, não importa. No entanto, ele corresponderá apenas na entrada com um comprimento de 1. Para entradas com um comprimento maior ou igual a 1, você precisa
+
seguir a classe de caracteres:var regexp = /^[a-zA-Z0-9-_]+$/; var check = "checkme"; if (check.search(regexp) === -1) { alert('invalid'); } else { alert('valid'); }
Observe que nem o
-
(neste caso) nem a_
necessidade de escape.fonte
Você não deve usar String.match, mas RegExp.prototype.test (ie
/abc/.test("abcd")
) em vez de String.search () se estiver interessado apenas em um valor booleano. Você também precisa repetir sua classe de personagem, conforme explicado na resposta de Andy E:var regexp = /^[a-zA-Z0-9-_]+$/;
fonte
RegExp.prototype.test
método se estiver interessado apenas em um booleano.Esta sintaxe é um pouco mais concisa do que as respostas que foram postadas até este ponto e atinge o mesmo resultado:
let regex = /^[\w-]+$/;
fonte
Erro estúpido. Então poste aqui, se alguém achar útil
[-\._]
- significa hífen, ponto e sublinhado[\.-_]
- significa todos os sinais no intervalo de ponto a sublinhadofonte
Tente isto
"[A-Za-z0-9_-]+"
Deve permitir sublinhados e hifens
fonte
Não escape do sublinhado. Pode estar causando alguma confusão.
fonte
\_
causar problemas, em JavaScript ou qualquer outro tipo de regex.experimente este, está funcionando bem para mim.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
fonte