使用正则表达式查找不在单词后面的单词

Find word that does not come after word with RegEx

我正在尝试获取所有以 @ 开头的文本,并将它们替换为所需的文本

这是正则表达式

/@([a-z_\d]+)/gi

现在我面临的问题是我只想获取单独的文本,例如

示例:嘿@hasham 我的电子邮件是 vakanihasham@gmail.com

当我运行 正则表达式时,它应该为我提供@hasham 值而不是@gmail。我通过添加 \s 来尝试在匹配参数之前检查空 space 的解决方案,但我遇到的问题是当@hasham 在段落中排在第一位时,它没有得到它,因为在尝试寻找方法之前没有空 space 。我怎样才能简单地 select 适合我的正则表达式的独立词?

使用负面回顾。

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

如果前面没有 non-whitespace 字符,则匹配 @

DEMO

您可以将此正则表达式与 \B(单词边界的反转)一起使用:

/\B@(\w+)/g

Updated RegEx Demo