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

276
Views
¿Cómo obtener "nombre de etiqueta", "nombre de atributo", "valor de atributo" en expresiones regulares?

Estoy tratando de escribir una expresión regular que debe devolver cada nombre de etiqueta, nombre de atributo y valor de atributo

Aquí está el ejemplo de código

 Hello, My name is Jack, This is my selfie: [img id='4' src="imageurl"] Below is the quick-link to my profile [profile username='jackisbest']

Necesito obtener cualquier texto encerrado entre [ ]

También necesito javascript regex para analizarlos y unirlos de esta manera

 > Match 1: img > Match 2: id='4' Group 1: id Group 2: 4 > Match 3: src="imageurl" Group 1: src Group 2: imageurl

Esta es la expresión regular que estoy usando, pero solo puede hacer coincidir los atributos y el valor

 (\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']

¡¡Gracias!!

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Modifiqué su expresión regular para capturar el nombre de la etiqueta y usé grupos de captura con nombre.

/\[?(?<tagName>\w+)\s?(?<attName>\S+)=['"]?(?<attValue>(?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']/gm

Esto podría funcionar para usted.

Prueba aquí: https://regex101.com/r/kT7pG4/1

over 4 years ago · Santiago Trujillo Report

0

Puedes usar

 /\[([a-zA-Z]\w*)|([^=\s]+)=["'](.*?)["']/g

Vea la demostración de expresiones regulares . Detalles :

  • \[([a-zA-Z]\w*) - un [ carácter y luego una letra seguida de cero o más caracteres de palabra (letras, dígitos, guiones bajos)
  • | o
  • ([^=\s]+) - uno o más caracteres que no sean = y espacio en blanco
  • = - a = carácter
  • ["'](.*?)["'] - " o ' , luego cero o más caracteres, la menor cantidad posible (capturados en el Grupo 3), y luego un " o ' carácter.
over 4 years ago · Santiago Trujillo Report

0

Si desea tener en cuenta la apertura [ y el cierre ] y se admite el cuantificador en el análisis posterior, puede usar:

 (?<=\[(\w+\b)[^\][\n]*)([^\s=]+)=['"]([^'"]*)['"](?=[^\][\n]*])
  • (?<= Mirada positiva hacia atrás para afirmar que lo que está a la izquierda es
    • \[ Partido [
    • (\w+\b) Capturar grupo 1 , hacer coincidir 1+ caracteres de palabra
    • [^\][\n]* Opcionalmente, haga coincidir cualquier carácter excepto [ ] o una nueva línea
  • ) Cerrar la mirada detrás
  • ([^\s=]+)=['"]([^'"]*)['"] Grupo de captura 2 y grupo 3 para la clave y el valor
  • (?=[^\][\n]*]) Afirmar un ] a la derecha

Demostración de expresiones regulares

El patrón tiene en el grupo 1 el valor del valor justo después de la apertura [ y el grupo 2 y el grupo 3 son los valores de los pares clave y valor:

 const regex = /(?<=\[(\w+\b)[^\][\n]*)([^\s=]+)=['"]([^'"]*)['"](?=[^\][\n]*])/g; const str = `Hello, My name is Jack, This is my selfie: [img id='4' src="imageurl"] Below is the quick-link to my profile [profile username='jackisbest' a='b']`; let m; console.log(Array.from(str.matchAll(regex), m => [m[1], m[2], m[3]]));

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