从URL中提取ID

时间:2018-01-07 16:46:02

标签: javascript jquery url

我网站的网址采用以下两种格式之一:

componentWillReceiveProps(nextProps) {
    if (nextProps.match.params.product !== this.props.match.params.product) {
      const currentProductId = nextProps.match.params.product
      const result = productlist.products.filter(obj => {

        return obj.id === currentProductId;

      })
      this.setState({

        product: result[0],
        currentId: currentProductId,
        result

      })
    }
  }

OR

Format 1: http://www.example.com/books/1309/angular-book 

我可以使用

提取整个网址
Format 2: http://www.example.com/ShowBook.aspx?ID=1309

如何从网址中提取ID(在本例中为" 1309"),特别是当我不知道网址是否会显示为格式1或2时?

5 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式仅匹配您的网址格式:

:nth-child()

使用 /books\/(\d+)\/|ID=(\d+)/g 会匹配网址中的任意数字,这是一个有效的例子:



\d+




答案 1 :(得分:0)

这是一个重复的问题,您可以查看this one

您可以使用此方法:

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}    

用法:

getUrlVars()["ID"]

答案 2 :(得分:0)

使用正则表达式:

url.match(/\d+/g) // One or more digits

举例:

"http://www.example.com/ShowBook.aspx?ID=1309".match(/\d+/g) // => ["1309"]

"http://www.example.com/books/1309/angular-book".match(/\d+/g) // => ["1309"]

然后你可以parseInt结果。

答案 3 :(得分:0)

尝试以下代码;

&#13;
&#13;
var url = new URL("http://www.example.com/books/1309/angular-book");
//var url = new URL("http://www.example.com/ShowBook.aspx?ID=1309");
var id;
if(url.href.indexOf(".aspx") > -1)
{
   id = url.searchParams.get("ID");
}
else
{
   id = url.pathname.split("/")[2];
}
console.log(id);
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

   function getID(){
        var url = window.location.href.split("/");
        if(url[3]==="books") return url[4];
        else { 
          url= window.location.href.split("?ID=");
          return url[1];
        }
    }