如何在 javascript 中编写一个匹配所有 twitter 喜欢提及(@something)但不匹配电子邮件地址的正则表达式。
我需要在一个巨大的文本字段中捕获无限数量的提及。应捕获在“@”之前具有不可打印字符和括号的字符串。
如何在 javascript 中编写一个匹配所有 twitter 喜欢提及(@something)但不匹配电子邮件地址的正则表达式。
我需要在一个巨大的文本字段中捕获无限数量的提及。应捕获在“@”之前具有不可打印字符和括号的字符串。
/(?<!\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+/
你可以使用这个正则表达式
/(\s|^)@[^\s]+/
\s
代表空间..