Estoy trabajando para permitir que los usuarios hagan menciones y se guardan en la base de datos de esta manera @[Abdullah](61dfaceadef99a95503119a8) a veces puede estar en una oración o párrafo.
¿Cómo puedo hacer para que si una oración o párrafo contiene una mención se convierta?
De: hey @[Abdullah](61dfaceadef99a95503119a8) check this out and @[James](61dfaceadef99a95514562) welcome to the group!
Para: hey Abdullah check this out and James welcome to the group!
Independientemente del idioma/plataforma, su patrón RE tendrá tres partes:
Suponiendo que solo está buscando el patrón de expresiones regulares en ECMAScript, necesitará algo como:
(\@\[).*(\]\([a-f0-9]+\))
Ejecute eso a través de match() o matchAll() para identificar coincidencias, o use replace() en las coincidencias. javascript.info tiene un ejemplo que usa grupos de captura , que se parece lo suficiente a su escenario.
Finalmente tuve tiempo de hacerlo y obtuve una respuesta también gracias a la respuesta de @Denton Thomas, pude entender qué hacer.
let str = "hey @[Abdullah](61dfaceadef99a95503119a8) check this out and @[James](61dfaceadef99a95514562) welcome to the group!"; let regexp = /((.)\[([^[]*)]\(([^(^)]*)\))/gi var result = str.replace(regexp, function(data){ console.log("data:", data) let name = data.match(/([^[]+(?=]))/g) console.log("name:", name) return name[0] }); console.log("message:", result );