Twitter 用户名的正则表达式

RegEx for twitter usernames

我需要一些有关正则表达式的帮助,以了解以“@”开头并遵循以下规则的用户名:

  1. 用户名仅包含 \w 符号。

  2. 如果字符串有除“@”以外的任何非单词字符则匹配,例如

    • @username!&?()*^
    • 中匹配@username
    • 但不匹配 @username@username@username!@username@username!%^@(如果字符串至少还有一个“@”)。
  3. 如果字符串在“@”之前有任何符号,则不匹配,例如

    • 不匹配 not@username!@username 中的@username。

现在我有:

(?<!\w)@(\w{4,15})\b(?!@)

仅排除前面的 \w 符号和“@”(如果它仅位于用户名之后)。

您可以在左侧断言空白边界,并在右侧断言非@。

(?<!\S)@(\w{4,15})\b(?![^@\n]*@)

说明

  • (?<!\S) 断言左侧空白边界
  • @字面匹配
  • (\w{4,15})\b 捕获 4-15 个单词字符后跟单词边界
  • (?![^@\n]*@) 断言除 @ 或右侧的换行符外的任何字符的可选重复,后跟 @

Regex demo