用户名的正则表达式以@开头

时间:2017-02-25 05:34:32

标签: php regex laravel

我希望捕获以 @ 符号开头的所有用户名,并且之前没有任何字符。

到目前为止,我有一个可以获取所有用户名的正则表达式,但它也会获取前面有字符的用户名,但我想忽略它们。

/@[\w\d]+/g

enter image description here

4 个答案:

答案 0 :(得分:4)

您可以使用正面外观来验证@前面是字符串的空格或开头。

(?<= |^)@[\w\d]+
  • (?<= |^)正面看后面。确保@前面有空格或^字符串的开头。不是前瞻,不消耗任何字符,只是检查。

proxied

示例

$string = "My name is @john_doe from test@test.com";
preg_match("/(?<= |^)@[\w\d]+/", $string, $matches);   

print_r($matches);
// Array ( 
//     [0] => @john_doe 
// )

答案 1 :(得分:2)

以下正则表达式(使用non-word boundary应该这样做:

(^|\B)@\w+

请参阅demo / explanation

答案 2 :(得分:0)

您只需添加 ^ 即可。所以正则表达式看起来像/^@[\w\d]+/g

答案 3 :(得分:0)

只需要添加一个术语来检查@是在开始

/ ^ @ [\ W \ d] + /克