2016-07-08 3 views
1

Что это самый безопасный способ получить идентификатор из URL, который выглядит следующим образом:Получить ID из URL-адреса строки

http://www.website.abc.net/fixed/27386323 

Так что я бы попытаться разбить строку и взять последнюю часть:

var parts = url.split("/"); 
var id = parts[parts.length - 1]; 

он также будет работать, если пользователь:

www.website.abc.net/fixed/27386323 

Но это не будет работать, если URL будет (последний слэш)

http://www.website.abc.net/fixed/27386323/ 

Так будет ли регулярное выражение лучше? Или я должен использовать JQuery?

+1

Просто проверьте, если последний элемент пуст, и использовать 2-й к последнему элементу вместо этого. – Barmar

ответ

1

Вы также можете использовать регулярное выражение для .match:

([^\/]+)\/?$ 

и захватить в плен группу # 1. /?$ делает трейлинг-слэш дополнительным в этом регулярном выражении.

RegEx Demo

+0

Можно ли также проверить правильный домен и «фиксированный» параметр? Поэтому этот 'www.another-website.net/fixed/27386323' даст мне ошибку ... И: результат должен быть числом, а не любой другой строкой. – user3142695

+0

Уверен, вы можете использовать это регулярное выражение' www \. сайт \ .abc \ .net \/фиксированный \ /.* \ Ь (\ d +) \ /? $ '. Дайте мне знать, если это сработает, тогда я могу обновить ответ – anubhava

+1

. работает. – user3142695

0

Вы можете просто обрезать любой слэш, как это:

if(url.substr(-1) === "/") { 
    url = url.substr(0, str.length - 1); 
} 

, а затем проверить ид.

var parts = url.split("/"); 
var id = parts[parts.length - 1]; 
1

Вы можете удалить любой слэш в конце URL-адрес, а затем использовать тот же подход, который вы сейчас делаете. Таким образом, он будет работать в обоих сценариях (с или без косой черты).

var url = 'http://www.website.abc.net/fixed/27386323/'; 
var url2 = url.replace(/\/$/, ""); // remove any trailing slash at the end 
alert(url2.split('/')[url2.split("/").length -1]); // gives the desired id 

Пример: https://jsfiddle.net/879moj9m/1/

Смежные вопросы