【问题标题】:Regular expression for username start with @用户名的正则表达式以@开头
【发布时间】:2023-03-27 04:20:01
【问题描述】:

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

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

/@[\w\d]+/g

【问题讨论】:

  • 尝试在@ 之前添加一个空格字符` `,看看是否有帮助。

标签: php regex laravel


【解决方案1】:

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

(^|\B)@\w+

demo / explanation

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以使用正向查看来验证@ 前面是否有空格或字符串的开头。

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

      Regex Demo

      示例

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

      【讨论】:

      • 感谢您的帮助:)
      • @ZeeshanAhmed 我添加了一个小解释。希望对你有帮助
      【解决方案4】:

      只需要添加术语以检查@是否在开头

      /^@[\w\d]+/g

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        相关资源
        最近更新 更多