tendencias populares javascript regex twitter hashtag unicode-string

javascript - populares - Regex para un hashtag(tipo twitter) que permite caracteres no ASCII



hashtag twitter tendencias (3)

Con las expresiones regulares JS nativas que no son compatibles con Unicode, su única opción es enumerar explícitamente los caracteres que pueden finalizar la etiqueta y hacer coincidir todo lo demás, por ejemplo:

> s = "foo #הַתִּקְוָה. bar" "foo #הַתִּקְוָה. bar" > s.match(/#(.+?)(?=[/s.,:,]|$)/) ["#הַתִּקְוָה", "הַתִּקְוָה"]

El [/s.,:,] Debe incluir espacios, signos de puntuación y cualquier otra cosa que pueda considerarse un símbolo de terminación.

Quiero que una expresión regular coincida con un hashtag simple como el de Twitter (por ejemplo, #someword). También quiero reconocer caracteres no estándar (como los que están en español, hebreo o chino).

Esta fue mi expresión regular inicial: (^|/s|/b)(#(/w+))/b
-> pero no reconoce caracteres no estándar.
Entonces, traté de usar XRegExp.js , que funcionó, pero funcionó muy lentamente.

¿Alguna sugerencia de cómo hacerlo?


#([^#]+)[/s,;]*

Explicación: Esta expresión regular buscará un # seguido de uno o más caracteres que no sean # , seguido de 0 o más espacios, comas o puntos y comas.

var input = "#hasta #mañana #babהַ"; var matches = input.match(/#([^#]+)[/s,;]*/g);

Resultado:

["#hasta ", "#mañana ", "#babהַ"]

EDITAR - Reemplazó / b por límite de palabra


Eventualmente encontré esto: el enlace útil de twitter-text.js , que es básicamente cómo Twitter resuelve este problema.