获得@及之后的正则表达式

时间:2015-10-22 11:05:47

标签: javascript regex

我正在尝试为字符串过滤创建正则表达式。我想得到符号" @"以及在那之后和空间之前写的任何东西。

有人可以帮我这个吗?

例如:

hi I am @vaibhav .

此正则表达式应该给出的预期结果是vaibhav

我做到了:

/@[a-z]*/

但是,我不确定这是否符合上述标准。

3 个答案:

答案 0 :(得分:3)

要获得从@到其后第一个空格的子字符串,请使用

@\S+

请参阅demo

\S表示非空白字符

如果您不需要@,请使用捕获组:

@(\S+)

您需要的值将在第1组中。请参阅another demo

如果您使用的是JavaScript:



var re = /@(\S+)/g; 
var str = 'hi I am @vaibhav . hi, and I am @strib .';
var m;
 
while ((m = re.exec(str)) !== null) {
    document.write("The value is: <b>" + m[1] + "</b><br/>");
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

最简单的解决方案是使用否定集。

  1. 搜索非'@'
  2. 的字符
  3. 请阅读'@'
  4. 现在捕获不是' '
  5. 的字符

    如果你想要匹配和捕捉,你可以这样做:

    [^@]*@([^ ]*).*
    

    [Live Example]

    如果您只想搜索,那么您不需要匹配整个字符串,您只需提取实际的匹配部分:

    @([^ ]*)
    

    [Live Example]

    最复杂的情​​况是您需要处理转义的'@'。以下是使用该匹配的示例:

    (?:[^\\@]|\\.)*@([^ ]*).*
    

    [Live Example]

答案 2 :(得分:0)

您可以使用lookarounds执行此操作。

编辑版:

(?<=@)\w+

Demo on regex101