Twitter状态URL正则表达式

vin*_*nie 5 regex

我有一个现有的正则表达式:

/^http:\/\/twitter\.com\/(\w+)\/status(es)*\/(\d+)$/
Run Code Online (Sandbox Code Playgroud)

用于确定URL是否是Twitter状态更新URL.例如.

http://twitter.com/allWPthemes/status/2040410213974016
Run Code Online (Sandbox Code Playgroud)

但自从"新"推出以来,他们已将状态URL更改为:

http://twitter.com/#!/allWPthemes/status/2040410213974016
Run Code Online (Sandbox Code Playgroud)

添加/#!

所以我的问题是:如何修改我的正则表达式以匹配两个URL?

我最后的失败尝试是:

^http:\/\/twitter\.com\/(#!\/w+|\w+)\/status(es)*\/(\d+)$
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 9

试试这个: /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)$/

这将匹配原始URL和新的哈希标记URL.

如果您只想匹配新网址,请执行以下操作: /^https?:\/\/twitter\.com\/#!\/(\w+)\/status(es)?\/(\d+)$/


小智 5

批准的答案将不匹配这样的共享 twitter URL:https : //twitter.com/USATODAY/status/9822704333385824260?s=19因为字符串标志“$”的结尾

// working solution
/^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)/
Run Code Online (Sandbox Code Playgroud)

测试:https : //regex101.com/r/mNsp3o/4