1

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

我需要在一个巨大的文本字段中捕获无限数量的提及。应捕获在“@”之前具有不可打印字符和括号的字符串。

4

3 回答 3

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

这将是一个简单的解决方案,但由于 JavaScript 不支持后视,它成为一项不平凡的任务:

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+/
于 2013-01-14T17:01:33.237 回答
3

你可以使用这个正则表达式

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

\s代表空间..

于 2013-01-14T16:55:27.927 回答
0

快速 JSFiddle 为您解答:

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

或者直接点击这里

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

于 2013-01-14T17:04:44.803 回答