如何在javascript中编写匹配所有Twitter的正则表达式,如提及(@something),但不是电子邮件地址。
我需要在一个巨大的文本字段中捕获无限数量的提及。
应该捕获在“@”之前具有不可打印字符和括号的字符串。答案 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)