Ya he hecho muchos "filtrados" con expresiones regulares para eliminar caracteres no deseados de una cadena, esto es lo que estoy usando:
var regexpHashtag = new RegExp(/(?:^|\s)(?:#)([a-zA-Z\d]+)/g) var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g) var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g) var regexpQuotes = new RegExp(/['"]+/g) tweetText = tweetText.replace(regexpHashtag, '') tweetText = tweetText.replace(regexpUrl, '') tweetText = tweetText.replace(regexpEmoji, '') tweetText = tweetText.replace(regexpQuotes, '')pero aún hay casos donde el hashtag persiste, por ejemplo antes de filtrar:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) 📸☀️☀️☀️#Setnja #Ilidza #Malaalejadespués:
Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) ️️️#Setnja"#Setnja" esta palabra es lo que está causando mi problema, es porque hay símbolos emoji antes de una palabra porque estos hashtags "#Ilidza #Malaaleja" se eliminan. ¿Cómo puedo mejorar mi expresión regular para eliminar esta palabra? Gracias.
Su lógica admite que un hashtag puede estar precedido por algún carácter, así que elimine la verificación de límites de espacios en blanco en el LHS:
var regexpHashtag = new RegExp(/#[a-zA-Z\d]+/g) var regexpUrl = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g) var regexpEmoji = new RegExp(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g) var regexpQuotes = new RegExp(/['"]+/g) tweetText = "Pogledajte prizore koje je naš fotograf danas zabilježio na Ilidži (FOTO) 📸☀️☀️☀️#Setnja #Ilidza #Malaaleja"; tweetText = tweetText.replace(regexpHashtag, '') tweetText = tweetText.replace(regexpUrl, '') tweetText = tweetText.replace(regexpEmoji, '') tweetText = tweetText.replace(regexpQuotes, '') console.log(tweetText);