【问题标题】:Regex Twitter Username from different URLs in PHP来自 PHP 中不同 URL 的正则表达式 Twitter 用户名
【发布时间】:2015-08-24 21:32:59
【问题描述】:

我研究了正则表达式,并试图找到从各种 Twitter 网址中提取用户名的那个。我已经有了这个,但在最后一个示例中失败了,有人可以帮助我吗?

/(https?:\/\/)?(www\.)?(twitter.com\/)?([@])?(\/status\/[0-9]{0,})?([a-z0-9_-])/ig

测试是:

@Username <= "Username"
twitter.com/username <= "username"
www.twitter.com/username <= "username"
http://twitter.com/username <= "username"
https://twitter.com/username/status/608085900145197053 <= "username3" (FAILED)

谢谢!

【问题讨论】:

  • @usernametwitter.com/whatever 解析为两个单独的正则表达式会容易得多。
  • 感谢您的评论,问题是,我希望用户能够将他想要的任何 Twitter 网址输入到表单字段中,然后仅提取用户名并将其添加到数据库...对于 UX,我希望他能够输入他想要的任何 twitter url,甚至是 @username 的东西。
  • 这很好,与我的观点无关。您可以在两个单独的正则表达式中执行此操作,这将使正则表达式更易于调试。
  • 坦率地说,我认为您甚至不需要正则表达式。您基本上有两种用例——一种是用户名在@ 之后,另一种是在twitter.com/ 之后。在这两种情况下都可以使用简单的字符串操作来提取用户名值。

标签: php regex url twitter


【解决方案1】:

我有这个解决方案:

/(?:https?:\/\/)?(?:mobile\.)?(?:www\.)?(?:twitter.com\/)?(?:[@])?([a-z0-9_-])(?:\/status\/(?:[a-z0-9]{0,}))?(?:\?.(\=.)?(\&.)?)?/ig

它适用于所有这些情况:

@Username

twitter.com/username

www.twitter.com/username

http://www.twitter.com/username

http://twitter.com/username

https://twitter.com/username/status/608085900145197053

https://mobile.twitter.com/Us3rName?p=s

https://mobile.twitter.com/user_name1/status/608128181753671680?p=v

【讨论】:

    【解决方案2】:

    当您在某些文本中搜索时,一个更好的工作解决方案是:

    (?:https?:\/\/)?(?:mobile\.)?(?:www\.)?(?:twitter.com\/)(?:[@])?([A-Za-z0-9-_\.]+)(?:\/status\/(?:[a-z0-9]{0,}))?(?:\?.(?:\=.)?(?:\&.)?)?
    

    唯一匹配的组是用户名本身,并且必须在 url 中包含 twitter.com/

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 2011-01-19
      • 2012-01-28
      • 2011-01-03
      • 2019-05-06
      • 2012-08-14
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多