Eu tenho uma página com uma caixa de texto em que um usuário deve digitar um código de registro de 24 caracteres (letras e números, sem distinção entre maiúsculas e minúsculas). Eu costumava maxlength
limitar o usuário a inserir 24 caracteres.
Os códigos de registro geralmente são dados como grupos de caracteres separados por hífens, mas eu gostaria que o usuário inserisse os códigos sem os hífens.
Como posso escrever meu código JavaScript sem jQuery para verificar se uma determinada sequência que o usuário digita não contém hífens, ou melhor ainda, contém apenas caracteres alfanuméricos?
javascript
string
Rio Vivian
fonte
fonte
inArray
.Respostas:
Para encontrar "olá" em
your_string
Para o alfanumérico, você pode usar uma expressão regular:
http://www.regular-expressions.info/javascript.html
Expressão regular alfanumérica
fonte
/hello/g.test(your_string)
. Enquanto indexOf funciona, acho que um teste de regex conta uma história melhor do que você está tentando realizar. Se estou tentando encontrar uma sequência de caracteres dentro de uma string, o índice é irrelevante.Com ES6 .includes ()
E: Não suportado pelo IE - você pode usar o operador Tilde
~
( Bitwise NOT ) com .indexOf ()Usado com um número, o operador Tilde efetivamente faz
~N => -(N+1)
. Use-o com dupla negação!!
( Logical NOT ) para converter os números em bools:fonte
Se você tiver o texto na variável
foo
:Isso irá testar e certificar-se de que o usuário inseriu pelo menos um caractere, e entrou apenas caracteres alfanuméricos.
fonte
verifique se a string (palavra / frase ...) contém uma palavra / caractere específico
fonte
O ES6 contém o método embutido (
includes
) em Stringprototype
, que pode ser usado para verificar se a string contém outra ou não.O polyfill a seguir pode ser usado para adicionar esse método em navegadores não suportados. ( Fonte )
fonte
Use uma expressão regular para fazer isso.
fonte
Vocês todos estão pensando demais. Basta usar uma expressão regular simples, é seu melhor amigo.
Aprenda Regex em 5 minutos?
fonte
if ( string1.test(regex) ) { alert("He likes pizza!"); }
var regex = /^[a-z0-9]+$/i
regex.test(string1)
regex.test(str)
. (str.match(regex)
É semelhante, mas não retorna um boolean.)Se você estiver procurando por caracteres no início ou no final da string, também poderá usar
startsWith
eendsWith
fonte
fonte
Para testar apenas caracteres alfanuméricos:
O regex está testando 1 ou mais (+) do conjunto de caracteres 0-9, AZ e az, começando com o início da entrada (^) e parando com o final da entrada ($).
fonte
A resposta de Kevins está correta, mas requer um número "mágico" da seguinte maneira:
Nesse caso, você precisa saber que -1 significa não encontrado . Eu acho que uma versão um pouco melhor seria:
fonte
indexOf()
retornará -1 se a sequência não for encontrada. Portanto, é dificilmente mais mágico do que usar 0 .Tente o seguinte:
Aqui está um exemplo: http://jsfiddle.net/oliverni/cb8xw/
fonte
A função de pesquisa de string também é útil. Ele procura por um caractere e uma sub_string em uma determinada string.
'apple'.search('pl')
retorna2
'apple'.search('x')
Retorna-1
fonte
Se você estiver lendo dados do DOM, como a tag ap ou h1, por exemplo, desejará usar duas funções JavaScript nativas, isso é fácil, mas limitado ao es6, pelo menos para a solução que vou fornecer. Vou procurar todas as tags p no DOM, se o texto contiver um "T", o parágrafo inteiro será removido. Espero que este pequeno exemplo ajude alguém!
HTML
JS
fonte
Funcionando perfeitamente. Este exemplo ajudará muito.
fonte
Demonstração: O método include () encontra o caractere "contains" em toda a string, retornando um true.
fonte
Verifique se a sequência é alfanumérica ou alfanumérica + alguns caracteres permitidos
O método alfanumérico mais rápido provavelmente é mencionado em: Melhor maneira de verificar alfanumérico em Javascript , pois opera diretamente em intervalos de números.
Em seguida, para permitir alguns outros caracteres extras com segurança, basta colocá-los em uma
Set
pesquisa rápida.Acredito que esta implementação lidará com pares substitutos corretamente corretamente.
GitHub upstream .
Testado no Node.js v10.15.1.
fonte