Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

410
Visualizações
Mi Regexp no funciona correctamente, pero funciona en el sitio web de Regexr

Tengo un problema con mi expresión regular. No sé por qué, es realmente extraño, pero obtengo un gran resultado con console.log y no con mi condición.

Este es mi código:

 const regEx = new RegExp("((?=.*[AZ])(?=.*[az])(?=.*[0-9])(?=.*[!\"#$%&'()*+,-./:;<=>?@[\\]^_\`{|}~]).{"+k+"})", 'g'); let possibilities = 0; for(let i = 0; i < string.length; i++){ if(string.length<i+k) break; const s = string.slice(i, i+k); console.log(regEx.test(s), s) if(regEx.test(s)) possibilities++; } return possibilities; 

 function count(n, k, string) { const regEx = new RegExp("((?=.*[AZ])(?=.*[az])(?=.*[0-9])(?=.*[!\"#$%&'()*+,-./:;<=>?@[\\]^_\`{|}~]).{"+k+"})", 'g'); let possibilities = 0; for(let i = 0; i < string.length; i++){ if(string.length<i+k) break; const s = string.slice(i, i+k); console.log(regEx.test(s), s) if(regEx.test(s)) possibilities++; } return possibilities; } console.log(count(30,6,"G=d:Dl:T=9NS1c$9qC%,^EdUVLnU-7"))

En mi función, obtengo 0 posibilidades, mientras que debería recibir 11. Y cuando cuento los valores true de consoles.log, obtengo 11... ¿Sabes por qué tengo este problema y cómo puedo resolverlo? ?

Y, cuando pruebo toda la cadena en regexr, funciona...

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Cuando estás haciendo console.log(regEx.test(s), s) estás consumiendo el RegEx una vez y mueves un cursor interno o algo así.

Debe crear el new RegExp dentro del alcance del bucle, por lo que su cursor se colocará nuevamente al principio y no se consumirá en cada iteración.

Además, es posible que desee almacenar el resultado en una variable si desea utilizarlo dos veces o más:

 function count(n, k, string) { let possibilities = 0; for(let i = 0; i < string.length; i++){ const regEx = new RegExp("((?=.*[AZ])(?=.*[az])(?=.*[0-9])(?=.*[!\"#$%&'()*+,-./:;<=>?@[\\]^_\`{|}~]).{"+k+"})", 'g'); if(string.length<i+k) break; const s = string.slice(i, i+k); const regexResult = regEx.test(s); console.log(regexResult, s) if(regexResult) possibilities++; } return possibilities; } console.log(count(30,6,"G=d:Dl:T=9NS1c$9qC%,^EdUVLnU-7"))

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda