0

我知道这听起来可能是一个常见问题,但我在这里有不同的变量:我有一个这样的 Url:

https://www.facebook.com/events/546604752058417/?suggestsessionid=791e61ca005570613fa552635bc794a5

现在我需要得到号码546604752058417。所以从逻辑上讲,我应该得到之后的所有内容,events/但之后的第一个斜线之后的所有内容546604752058417

现在的问题是 URL 可能以或不以 http、https、www 等开头。

我对 Javascript 有点迷茫和陌生。

做它的简单方法是什么?

我有一个功能可以检查 URL 是否有效并且它来自 Facebook,但我现在不知道如何获取它546604752058417

显然这只是一个样本。该函数应该能够使用任何事件 ID。

    function fbProcessSearch() {
        var search_url = $("#search_fb_url").val();

        if(isFbUrl(search_url)) {
            $("#search_fb_event").validationEngine("hide");
         // gets the event id from the Url and passes it to the below function.
            fbProcess(eid);
        }else{
            $("#search_fb_event").validationEngine("showPrompt", "Please enter the Facebook event Url", "load", "topLeft", true);
    }
 }

    function isFbUrl(url) {
        var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        return regexp.test(url) && url.indexOf("facebook.com") > -1;
}
4

3 回答 3

2

.match与此正则表达式一起使用:/events\/(.*?)\//

"https://www.facebook.com/events/546604752058417/?suggestsessionid=791e61ca005570613fa552635bc794a5".match(/events\/(.*?)\//)[1]
=> "546604752058417"

解释:

events\/ -> Match "/events/" literally
(.*?)\/  -> match anything until first "/" and also capture it
于 2013-06-14T09:59:27.253 回答
1

如果您知道 url 的外观并且可以确认它是 facebook。然后.split("events/")[1].split("/")[0]获取之间的代码/events/######/

于 2013-06-14T10:01:08.270 回答
0

您可以先用“/”“拆分”您的网址

var search_url = $("#search_fb_url").val().split("/");

然后您在包含“事件”的字段之后选择字段....

于 2013-06-14T10:00:57.973 回答