用Javascript中的正则表达式来捕捉提及

时间:2013-01-14 16:51:45

标签: javascript regex

如何在javascript中编写匹配所有Twitter的正则表达式,如提及(@something),但不是电子邮件地址。

我需要在一个巨大的文本字段中捕获无限数量的提及。

应该捕获在“@”之前具有不可打印字符和括号的字符串。

3 个答案:

答案 0 :(得分:4)

/(?<!\w)@\w+/g

将是一个简单的解决方案,但由于JavaScript不支持lookbehind,因此它变成了一项非常重要的任务:

var matches = str.match(/(^|\W)@\w+/g);
for (var i=0; i<matches.length; i++)
    matches[i] = matches[i].replace(/^[^@]/, "");

如果您想支持更广泛的字符(从编辑中获得),您可以使用

/(?<![^\s(]@\S+/g // or respectively
/(^|[\s(])@\S+/

答案 1 :(得分:2)

您可以使用此正则表达式

/(\s|^)@[^\s]+/

\s代表空间..

答案 2 :(得分:0)

快速JSFiddle回答你:

var re = /\s@[\w\-]/ 

Or just Click Here

请注意,您可以在控制台中看到正则表达式的结果(例如,Firebug)。