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

140
Vistas
la expresión regular correcta para capturar una parte de la URL

Hay algunos casos de URL como a continuación.

 (1) https://m.aaa.kr/category/outer/55/ (2) https://m.aaa.kr/category/inner/5/ (3) https://m.aaa.kr/product/jacket/3031/category/55/display/1/ (4) https://m.aaa.kr/product/shirts/30/category/5/display/1/

Necesito la expresión regular correcta para capturar la parte "55" o "5" de esas URL.

Lo que probé fue /(?:\/category\/\w+)(\/category\/)|(\d+[^\/])/g

Sin embargo, esta expresión regular también captura el "3031" en el caso (3), "30" en el caso (4). Y no puede capturar "5" en los casos (2) y (4).

¿Cómo puedo arreglarlo para hacer lo correcto?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Tenga en cuenta que su expresión regular /(?:\/category\/\w+)(\/category\/)|(\d+[^\/])/g coincide con múltiples ocurrencias (debido a la bandera g ) del patrón que coincide con /category/ , luego uno o más caracteres de palabra y luego /category/ (capturado en el Grupo 1) o captura en el Grupo 2 uno o más dígitos y luego un carácter que no sea / . Este es definitivamente un patrón incorrecto, ya que solo desea hacer coincidir y capturar dígitos en el Grupo 2. Además, la primera alternativa no parece coincidir con nada significativo para usted, ya que no restringe la segunda alternativa.

Además, el uso de \w+ para hacer coincidir cualquier texto entre dos barras no suele ser eficaz, ya que las partes de la URL a menudo contienen - caracteres, que no son caracteres de palabras.

Entonces, lo que puedes usar es uno de

 /\/category\/(?:[\w-]+\/)?(\d+)/ /\/category\/(?:[^\/]+\/)?(\d+)/

Tenga en cuenta que no hay una bandera g ya que todo lo que necesita es la primera coincidencia. Detalles :

  • \/category\/ - una cadena /category/
  • (?:[\w-]+\/)? - una secuencia opcional de uno o más caracteres de palabras o guiones y luego un / (nota [^\/]+ coincide con uno o más caracteres que no sean / , y también un grupo que no captura que ayuda a mantener la estructura del objeto de coincidencia más simple)
  • (\d+) - Grupo 1: uno o más dígitos.

Vea la demostración de JavaScript:

 const urls = ['https://m.aaa.kr/category/outer/55/','https://m.aaa.kr/category/inner/5/','https://m.aaa.kr/product/jacket/3031/category/55/display/1/','https://m.aaa.kr/product/shirts/30/category/5/display/1/'] const rx = /\/category\/(?:[\w-]+\/)?(\d+)/; for (const url of urls) { document.body.innerHTML += '"' + url + '" => "<b>' + (rx.exec(url) || ['',''])[1] + '</b>"<br/>'; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Qué tal capturar el primer dígito (o dígitos) directamente después de /category/ o /category/someothertext/

con: /\/category\/(\w+\/)?(\d+)/g

Puede probarlo en línea aquí: https://regex101.com/r/n4dj1r/1

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