Jos*_*den 20 regex url facebook
鉴于以下Facebook个人资料和页面网址,我的目的是将个人资料ID或用户名提取到第一个匹配位置.
http://www.facebook.com/profile.php?id=123456789
http://www.facebook.com/someusername
www.facebook.com/pages/Regular-Expressions/207279373093
到目前为止我的正则表达式看起来像这样
http://www.facebook.com/profile.php?id=123456789
http://www.facebook.com/someusername
www.facebook.com/pages/Regular-Expressions/207279373093
Run Code Online (Sandbox Code Playgroud)
这产生以下结果:
结果1
1. 123456789
结果2
1.
2. someusername
结果3
1.
2. 207279373093
理想的结果如下:
结果1
1. 123456789
结果2
1. someusername
结果3
1. 207279373093
也就是说,我希望始终在第一个位置返回配置文件标识符.
它也是理想的www.facebook.com/和facebook.com/也不匹配.
n00*_*00b 18
我推荐Rad Software正则表达式设计器.
此在线工具也很棒https://regex101.com/(尽管大多数人更喜欢http://regexr.com/)
(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?
Run Code Online (Sandbox Code Playgroud)
我在前面做了一个要点,对于给定的例子可以正常工作:
# Matches patterns such as:
# http://www.facebook.com/my_page_id => my_page_id
# http://www.facebook.com/#!/my_page_id => my_page_id
# http://www.facebook.com/pages/Paris-France/Vanity-Url/123456?v=app_555 => 45678
# http://www.facebook.com/pages/Vanity-Url/45678 => 45678
# http://www.facebook.com/#!/page_with_1_number => page_with_1_number
# http://www.facebook.com/bounce_page#!/pages/Vanity-Url/45678 => 45678
# http://www.facebook.com/bounce_page#!/my_page_id?v=app_166292090072334 => my_page_id
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/
Run Code Online (Sandbox Code Playgroud)
要获得最新版本:https://gist.github.com/733592
小智 6
只有此正则表达式适用于所有 FB URL:
/(?:https?:\/\/)?(?:www\.)?(?:facebook|fb|m\.facebook)\.(?:com|me)\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]+)(?:\/)?/i
Run Code Online (Sandbox Code Playgroud)
Facebook 个人资料网址的最完整模式:
/(?:https?:\/\/)?(?:www\.)?facebook\.com\/.(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]*)/
Run Code Online (Sandbox Code Playgroud)
它检测所有情况+一个重要区别。其他正则表达式模式将http://www.facebook.com/识别为有效的 Facebook 个人资料 URL,但它不是有效的个人资料 URL。它只是原始的 Facebook URL,而不是用户或页面地址。但是这个正则表达式可以将普通 url 与个人资料和页面 url 区分开来,并且只接受有效的。
我已经尝试了上面的每一个答案,但每个答案都至少由于一个原因而不起作用。这很可能对 OP 没有帮助,但是如果像我这样的人在网络搜索中发现了这一点,我相信这是正确的答案:
^(?:.*)\/(?:pages\/[A-Za-z0-9-]+\/)?(?:profile\.php\?id=)?([A-Za-z0-9.]+)
Run Code Online (Sandbox Code Playgroud)
基本上支持我能想到的所有内容,除了验证域是否包含 facebook.com。如果您需要检查 URL 是否有效,这应该在正则表达式之外完成,以确保页面或配置文件确实存在。为什么要检查两次,尤其是其中一项检查不完整时?
| 归档时间: |
|
| 查看次数: |
32308 次 |
| 最近记录: |