当前位置: 首页 > 面试题库 >

如何在JavaScript中像Twitter这样的字符串中拉出@提及

令狐晟
2023-03-14
问题内容

我正在Node.js中编写一个应用程序,允许用户在Twitter等消息中互相提及。我希望能够找到用户并向他们发送通知。为了做到这一点,我需要拉@usernames来从node.js中的字符串中找到提及?

有什么建议,正则表达式,问题吗?


问题答案:

我发现这是在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 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}]|:\/\/)/);

如果您使用了更有效或更准确的方法,请告诉我。谢谢!



 类似资料:
  • 我有一个JavaScript字符串(例如),我只想从中得到。 我试过: 它仍然在警报中返回,我如何让它工作? 它需要适应任何长度数字附加在结束。

  • 问题内容: 如何计算特定字符串在另一个字符串中出现的次数。例如,这就是我要使用Javascript进行的操作: 问题答案: 在正则表达式(简称 全球 )说,搜索整个字符串,而不是只要找到第一次出现。这匹配两次: 并且,如果没有匹配项,则返回:

  • 问题内容: 我需要像这样用javascript制作字典 我不记得确切的符号了,但是有点像: javascript中有这样的事情吗? 问题答案: 这是一篇旧文章,但我认为无论如何我都应该提供一个图解的答案。 使用javascript的对象表示法。像这样: 并访问值: 或者您可以使用javascript文字对象表示法,其中键不需要用引号引起来:

  • 问题内容: 我有一个看起来像这样的字符串: 据我的理解是。那么,如何将其转换为带有键和值引号的可读JSON? 问题答案: 解码自:

  • 问题内容: 我有一个对象。 如何呈现以下片段的一部分? 我有另一个图书馆的“相对语言时间”部分。 我尝试了以下方法: 但这给了我: 问题答案: 已经有一个名为的函数: 如果您以某种方式使用了不支持它[的浏览器,那么我可以满足您的要求:

  • 我有以下字符串: 我需要一个正则表达式来删除数字之间的空白,但也要避免在数字之前有一个非数字值,如 这里想要避免任何非数值后面的数值,这里在我的字符串中想要避免数值也在H后面,这里有2,但我只想做一个像“23445 2546”这样的字符串。如果有任何字母字符在那里,它应该被删除,并添加空格之间的数字。 从上面的正则表达式和代码,我得到了输出: 所需输出: