我网站的网址采用以下两种格式之一:
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时?
答案 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)
尝试以下代码;
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;
答案 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];
}
}