从Url获​​取特定字符串

时间:2013-06-14 09:56:07

标签: javascript

我知道这听起来像是一个常见的问题,但我在这里有不同的变数: 我有一个像这样的网址:

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

现在我需要获得数字546604752058417。所以逻辑上我应该得到events/之后的所有内容,但是546604752058417之后的第一个斜杠之后的所有内容

现在的问题是,网址可能会以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;
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你可以先用“/”

“分割”你的网址
var search_url = $("#search_fb_url").val().split("/");

然后你在包含“事件”的那个字段之后取出字段......

答案 2 :(得分:0)

如果你知道网址的外观,可以确认它是facebook。然后.split("events/")[1].split("/")[0]获取/events/######/

之间的代码