获取网址的特定部分

时间:2016-02-02 16:15:47

标签: javascript jquery

我有一组网址,我需要获取特定部分。网址格式为:

http:\/\/xxx.xxxxx.com\/xxxx\/xxxx\/1234567_1.jpg

我需要获取1234567位并将其存储在var。

7 个答案:

答案 0 :(得分:5)

你可以做分裂

"http://xxx.xxxxx.com/xxxx/xxxx/1234567_1.jpg".split("/").pop().split("_").shift()

或正则表达式

"http://xxx.xxxxx.com/xxxx/xxxx/1234567_1.jpg".match(/\/(\d+)_\d+\.jpg$/).pop()

答案 1 :(得分:1)

通过使用函数检查URL,您应该能够使用JSON字符串。这样的事情应该有效:

function checkForMatches(str) {
    var res = str.match(/.*\/(.*)_1.jpg/);    
    if(res) {
        output = res[res.length-1];
    } else {
        output = false;
    }    
    return output;      
}


$.get("test.php", function (data) {
    // now you can work with `data`
    var JSON = jQuery.parseJSON(data); // it will be an object
    $.each(JSON.deals.items, function (index, value) {
        //console.log( value.title + ' ' + value.description );
        tr = $('<tr/>');
        tr.append("<td>" + "<img class='dealimg' src='" + value.deal_image + "' >" + "</td>");
        tr.append("<td>" + "<h3>" + value.title + "</h3>" + "<p>" + value.description + "</p>" + "</td>");
        //tr.append("<td>" + value.description + "</td>");
        tr.append("<td> £" + value.price + "</td>");
        tr.append("<td class='temperature'>" + value.temperature + "</td>");
        tr.append("<td>" + "<a href='" + value.deal_link + "' target='_blank'>" + "View Deal</a>" + "</td>");

        myvar = checkForMatches(value.deal_link);
        if(myvar == false) {
            myvar = value.deal_link; //if no matches, use the full link
        }


        tr.append("<td>" + "<a href='" + myvar + "' target='_blank'>" + "Go To Argos</a>" + "</td>");
        $('table').append(tr);
    });
});


早些时候,更基本的例子。

您可以使用正则表达式查找匹配项。

这样的事情会起作用:

var str = "http:\/\/xxx.xxxxx.com\/xxxx\/xxxx\/1234567_1.jpg"; 
var res = str.match(/.*\/(.*)_1.jpg/);
alert(res[1])

如果你想进一步使用它,你可以创建一个函数并传递你想要测试的字符串,如果找到它将返回匹配的值,如果没有匹配则返回布尔值假。

这样的事情会起作用:

function checkForMatches(str) {
    var res = str.match(/.*\/(.*)_1.jpg/);

    if(res) {
        output = res[res.length-1];
    } else {
        output = false;
    }

    return output;

}


alert(checkForMatches("http:\/\/xxx.xxxxx.com\/xxxx\/xxxx\/1234567_1.jpg"))
alert(checkForMatches("this is an invalid string"))

您可以在此处看到它:https://jsfiddle.net/9k5m7cg0/2/

希望有所帮助!

答案 2 :(得分:1)

var pathArray = window.location.pathname.split( '/' );

分裂1/2/3/4 ......

所以要获得路径2,它将是:

var setLocation = pathArray[1];

答案 3 :(得分:1)

那应该这样做

function getLastFolder(){
    var path = window.location.href;
    var folders =path.split("/");
    return folders[folders.length-1]);
}

答案 4 :(得分:0)

这里的想法是:接受最终/字符后面的所有内容,然后获取第一个_字符之前的子字符串中的所有内容。

var getUrlTerm = function(url) {
    var urlPcs = url.split('/');
    var lastUrlPc = urlPcs[urlPcs.length - 1];
    return lastUrlPc.split('_')[0];
}

答案 5 :(得分:0)

您可以将网址归因于&#39; A&#39;元素并使用javascript内置的方法让您的生活更轻松:

var parser = document.createElement('a');
parser.href = "YOUR URL HERE";
var fileName = parser.pathname.split('/').pop();
var code = fileName.split('_')[0];

code将拥有您想要的价值。

答案 6 :(得分:0)

我会使用正则表达式并感觉它似乎在寻找可以为此进行正则表达式过滤的数字。

var path = window.location.pathname,
      regFilter = /\d*/g,
      filter = regFilter.exec(path);

正则表达式\ d会将您的过滤器搜索范围缩小为仅查找数字。并且*抓住了一组数字。

您的结果位于过滤器var中。唯一的问题是exec返回一个包含原始字符串的数组,返回的结果将在1索引处,因此您必须从那里抓取它。

filter[1];