正则表达式以@符号开头

时间:2015-01-21 02:47:17

标签: javascript regex

在正则表达式中,如何查找以@symbol开头的匹配?符号不能位于单词的中间(电子邮件地址中的链接)。

例如,一个如下所示的字符串:

@someone's email is blah@gmail.com and @someoneelse wants to send an email.

我使用的表达是/^@[\w]/g

它应该返回:

@someone's

@someoneelse

我使用的表达似乎不起作用。

2 个答案:

答案 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"]