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

308
Views
Extraiga la URL hasta el espacio en blanco o la etiqueta <br> usando Regex con Javascript

Tengo una cadena como:

 Webcam recording https://www.example.com/?id=456&code=123

o como:

 Webcam recording https://www.example.com/?id=456&code=123<br><b>test<b>

Para extraer la URL del primer ejemplo que usé: var reg_exUrl = /\bhttps?:\/\/[^ ]+/g;

Ahora traté de extender Regex para que tome la primera coincidencia hasta el espacio en blanco (final de línea) o la etiqueta <br> .

Este fue mi intento:

 var reg_exUrl = /\b(https?:\/\/[^ ]+)(\<br\>)/g;

Lo que se ve bien en https://regex101.com/r/gudNab/1 y aparece como dos coincidencias diferentes.

Pero al usar Regex en Javascript, la etiqueta <br> siempre se incluye en el enlace.

Usando var matches = line.match(reg_exUrl); me da con matches[0] :

 https://www.example.com/?id=456&code=123<br>

en lugar del deseado https://www.example.com/?id=456&code=123

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si desea seleccionar texto antes de <br> , puede usar una búsqueda anticipada positiva. https?:\/\/.*?(?=<br>)

Agregar $ y \n para un final anticipado de la entrada: https?:\/\/.*?(?=<br>|$|\n)

 const regexp = /https?:\/\/.*?(?=<br>|$|\n)/; const testString = "Webcam-Aufnahme https://www.example.com/file?id=959559110184937375.mp4&code=4yrn1ev<br>**test**"; console.log(testString.match(regexp)[0])

Ver en regex101

about 4 years ago · Santiago Trujillo Report

0

Obtiene la coincidencia completa ya que está usando matches[0] pero tiene 2 grupos de captura donde la parte sin <br> está en el grupo de captura 1.

Puede obtener ese valor de grupo usando coincidencia si elimina el indicador global /g .

 var line = "Webcam recording https://www.example.com/?id=456&code=123<br><b>test<b>\n"; var reg_exUrl = /\b(https?:\/\/[^ ]+)(\<br\>)/; var matches = line.match(reg_exUrl); console.log(matches[1]);

Si desea que ambos ejemplos coincidan, puede usar un patrón sin un cuantificador no codicioso mediante el uso de una clase de carácter negado que coincida con cualquier carácter excepto < , y solo coincida si no está seguido directamente por br>

El patrón coincide:

  • \bhttps?:\/\/
  • [^\s<]* Opcionalmente, haga coincidir cualquier carácter excepto un carácter de espacio en blanco o <
  • (?: grupo de no captura
    • <(?!br>) Coincide con < si no le sigue directamente br>
    • [^\s<]* Opcionalmente, haga coincidir cualquier carácter excepto un carácter de espacio en blanco o <
  • )* Cerrar el grupo de no captura y, opcionalmente, repetir

 const regex = /\bhttps?:\/\/[^\s<]*(?:<(?!br>)[^\s<]*)*/; [ "Webcam-Aufnahme https://www.example.com/file?id=959559110184937375.mp4&code=4yrn1ev<br><b>test<b><br>", "Webcam-Aufnahme https://www.example.com/file?id=959559110184937375.mp4&code=4yrn1ev" ].forEach(s => { const m = s.match(regex); if (m) { console.log(m[0]); } });

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!