Tengo una etiqueta de anclaje en este formato (nombre de usuario como texto de enlace) <a href="#">@rey</a> .
Quiero eliminar una etiqueta solo si la etiqueta <a> contiene el formato de nombre de usuario (@nombredeusuario).
Actualmente tengo el siguiente código para la tarea pero no funciona como se esperaba
let message= "Hello <a href="#">@rey</a> how are you doing ?" const regex = /\B<a href='#'>@(\S+)<\/a>/g const subst = `@$1` message = message.replace(regex, subst) console.log(message)Suponiendo que la etiqueta podría ser cualquier cosa, use esta expresión regular:
<(\w+)\b[^>]+>@(?<username>\w+)<\/\1> si la etiqueta es fija (es decir, <a> )
<a[^>]*>@(?<username>\w+)<\/a>El código de reemplazo:
let message= 'Hello <a href="#">@rey</a> how are you doing ?' const regex = /<(\w+)\b[^>]+>@(?<username>\w+)<\/\1>/g; message = message.replace(regex, `$<username>`) console.log(message)"Hola rey, ¿cómo estás?"
Consulta el resultado aquí
Problema de cotización en la instrucción let . Lo siguiente debería funcionar:
let message= "Hello <a href='#'>@rey</a> how are you doing ?" const regex = /\B<a href='#'>@(\S+)<\/a>/g const subst = `@$1` message = message.replace(regex, subst) console.log(message)o incluso
let message= 'Hello <a href="#">@rey</a> how are you doing ?' const regex = /\B<a href="#">@(\S+)<\/a>/g const subst = `@$1` message = message.replace(regex, subst) console.log(message)