Odkryłem, że jest to najlepszy sposób na znalezienie wzmianek wewnątrz napisu w javascript.
var str = "@jpotts18 what is up man? Are you hanging out with @kyle_clegg";
var pattern = /\[email protected][a-z0-9_-]+/gi;
str.match(pattern);
["@jpotts18", "@kyle_clegg"]
I celowo ograniczona do górnej i małe alfanumeryczne i (-, _) symboli w celu uniknięcia okresów, które mogłyby być mylone z nazwy użytkownika, takich jak (@ j.potts).
To właśnie robi twitter-text.js za kulisami.
// Mention related regex collection
twttr.txt.regexen.validMentionPrecedingChars = /(?:^|[^a-zA-Z0-9_!#$%&*@@]|RT:?)/;
twttr.txt.regexen.atSigns = /[@@]/;
twttr.txt.regexen.validMentionOrList = regexSupplant(
'(#{validMentionPrecedingChars})' + // $1: Preceding character
'(#{atSigns})' + // $2: At mark
'([a-zA-Z0-9_]{1,20})' + // $3: Screen name
'(\/[a-zA-Z][a-zA-Z0-9_\-]{0,24})?' // $4: List (optional)
, 'g');
twttr.txt.regexen.endMentionMatch = regexSupplant(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/);
Proszę dać mi znać, jeśli używasz czegoś, co jest bardziej wydajne lub dokładne. Dzięki!
Myślę, że ten jest inny, ponieważ jest specyficzny dla danego języka. Myślę, że wspaniale jest, że ludzie odwołują się do tego artykułu, ale nie jest on aktualizowany najlepszą odpowiedzią. – jpotts18