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

280
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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