在正则表达式中,如何查找以@symbol开头的匹配?符号不能位于单词的中间(电子邮件地址中的链接)。
例如,一个如下所示的字符串:
@someone's email is blah@gmail.com and @someoneelse wants to send an email.
我使用的表达是/^@[\w]/g
它应该返回:
@someone's
@someoneelse
我使用的表达似乎不起作用。
答案 0 :(得分:4)
您可以使用\B
这是一个非字边界,并且是\b
的否定版本。
var s = "@someone's email is blah@gmail.com and @someoneelse wants to send an email.",
r = s.match(/\B@\S+/g);
console.log(r); //=> [ '@someone\'s', '@someoneelse' ]
答案 1 :(得分:0)
/(^|\s)@\w+/g
[\w]
只匹配单个字符,这就是为什么你的正则表达式只返回@s
。 \w+
将匹配1个或更多字符。
如果您想在字符串中或行的开头处获取单词,可以使用捕获组(^|\s)
,它可以作为字符串的开头或者在空格字符后面的单词。
<强>样本强>
var str="@someone's email is blah@gmail.com and @someoneelse wants to send an email.";
console.log(str.match(/(^|\s)@\w+/g)); //["@someone", " @someoneelse"]