Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

395
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!