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

256
Visualizações
obteniendo "demasiadas recursiones" al validar js a través de expresiones regulares

Estoy tratando de validar un nombre de usuario con RegEx en Javascript y, aunque el resultado de .test es verdadero, todo funciona bien, pero (a veces) cuando uso una cadena que no coincide, mi aplicación se rompe y aparece el error Demasiada recursividad . Quiero saber en qué parte de mi RegEx (o código) me equivoqué para causar tal cosa.

Este es mi código (RegEx):

 console.log(/^[A-Za-zÀ-ÖØ-öø-ÿ]([ _]?[A-Za-z0-9À-ÖØ-öø-ÿ]+)+$/g.test("RegExr was created by gskinner_com_and is proudly hosted by Media Temple"));

Quiero que la cadena correcta comience con una letra, luego tenga cualquier combinación de letras y dígitos con espacios y guiones bajos permitidos entre ellos, pero solo uno a la vez.

La expresión regular funciona en sitios web relacionados con la prueba, y en mi propio código, y recibo el error cuando la entrada no válida está lejos del comienzo de la cadena, de hecho, mi computadora tarda más en calcular el resultado cuanto más pongo el error (Digamos un punto o 2 espacios uno detrás del otro) hasta que en cierto punto me sale el error. o el uso de demasiados caracteres como ¿Cuál es el problema? posición del $ o el uso de demasiados caracteres como À-ÖØ-öø-ÿ ? y que puedo hacer para solucionarlo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El retroceso catastrófico se debe a los cuantificadores anidados en el grupo. Si el patrón no puede coincidir, los cuantificadores anidados permiten que muchas posiciones retrocedan, aún tratando de obtener una coincidencia.

Puede comenzar el patrón haciendo coincidir un solo carácter y luego, opcionalmente, hacer coincidir uno de la clase de caracteres [A-Za-z0-9À-ÖØ-öø-ÿ]*

Luego, en el grupo repetido, haga coincidir un espacio o un guión bajo [ _] seguido de 1 o más veces la clase de carácter ya existente [A-Za-z0-9À-ÖØ-öø-ÿ]+

Esto no desactiva el retroceso, sino que elimina un cuantificador anidado para permitir menos posiciones a las que retroceder.

Tenga en cuenta que repetir un grupo de captura captura el valor de la última iteración. Si no necesita el valor del grupo de captura después, puede convertirlo en un grupo que no sea de captura utilizando (?: en su lugar.

 ^[A-Za-zÀ-ÖØ-öø-ÿ][A-Za-z0-9À-ÖØ-öø-ÿ]*(?:[ _][A-Za-z0-9À-ÖØ-öø-ÿ]+)+$

Demostración de expresiones regulares

Para hacer coincidir también una sola palabra, puede hacer que el cuantificador * para el grupo coincida cero o más veces:

 ^[A-Za-zÀ-ÖØ-öø-ÿ][A-Za-z0-9À-ÖØ-öø-ÿ]*([ _][A-Za-z0-9À-ÖØ-öø-ÿ]+)*$

Demostración de expresiones regulares

about 4 years ago · Juan Pablo Isaza 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