Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

399
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda