我有一个现有的正则表达式:
/^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)
试试这个:
/^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