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

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

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 Report

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 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!