ho scoperto che questo è il modo migliore per trovare menzioni all'interno di una stringa in 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"]
ho volutamente limitati a superiore e minuscole alfanumerico e - simboli (, _) al fine di evitare periodi che potrebbero essere confusi per nomi come (@ j.potts).
Questo è ciò che twitter-text.js sta facendo dietro le quinte.
// 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}]|:\/\/)/);
Per favore fatemi sapere se avete usato tutto ciò che è più efficiente, o accurate. Grazie!
Penso che questo è diverso perché è specifico di una lingua. Penso che sia fantastico per le persone fare riferimento a quell'articolo, ma non è aggiornato con la migliore risposta. – jpotts18