我发现这是在javascript中的字符串中查找提及的最佳方法。
var str = "@jpotts18 what is up man? Are you hanging out with @kyle_clegg";var pattern = /B@[a-z0-9_-]+/gi;str.match(pattern);["@jpotts18", "@kyle_clegg"]
我特意将其限制为大写和小写字母数字和(-,_)符号,以避免可能对诸如(@ j.potts)之类的用户名造成混淆的句点。
这就是twitter-text.js在后台执行的操作。
// Mention related regex collectiontwttr.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}]|://)/);如果您使用了更有效或更准确的方法,请告诉我。谢谢!



