Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

parte do codigo nao rodou

Bom dia! No primeiro vídeo de expressões regulares e javascript foi mostrado um arquivo html contendo somente as tags html e script, onde é criado um objeto regexp que interage com uma string alvo, e tem seu resultado impresso pelo console.log dentro de um while. Eu tentei fazer com que a variável alvo recebesse seu valor através de um querySelector (coloquei um console.log pra ver se essa parte tinha dado certo) puxando de uma span do body do arquivo, achei que não tinha rodado porque não tinha um botão pra isso, depois de clicar no botão só imprime o primeiro console.log o resto do código não roda. Gostaria de entender isso melhor, se puderem ajudar ficarei muito grato.

<html>
<head><title>ops</title></head>
<body>
<span id="id">9:51 20-4-18</span>
<button onClick="run()">
<script>
function run(){
var alvo = document.querySelector("#id");
console.log(alvo);
var exp = new RegExp('(51)', 'g');
var resultado = null;
while (resultado = exp.exec(alvo)){
    console.log(resultado);
}
}
</script>
</body>
</html>
3 respostas

O seu while está errado, vc deveria usar 2 ou 3 iguais( o ideal são 3, para ler mais) quando faz uma comparação em javascript, no caso o correto seria:

while (resultado === exp.exec(alvo)){
    console.log(resultado);
}

Mas cuidado, do jeito que o código está ele vai gerar um loop infinito que pode travar seu navegador.

Ola! Acrescentou muito aprender sobre as coerções do JavaScript. Gostaria de observar que colocando 2 ou3 iguais, a saída do console fica null, quando o Nico colocou só um igual no seu código da aula me chamou a atenção e tinha interpretado pelo meu entendimento que 'resultado' recebe todas as saídas de exec . O while continuaria enquanto 'resultado' tivesse um valor, enquanto fosse true. WHILE pode receber então 1 2 ou 3 iguais

solução!

Apenas uma correção, apesar do while aceitar somente um sinal de igual isso é um erro e causa um loop infinito, como no código abaixo:

var teste;
var contador = 0;

while(teste = 1) {

    contador++;

  console.log(contador);

  if(contador == 100) {
      break;
  }

}

Permitir o uso de apenas um igual no while é uma falha da linguagem, pois sempre vai acarretar em um loop infinito.