Я извлекаю этот странный URL из объекта в кнопке Twitter:
http://platform.twitter.com/widgets/tweet_button.1329950604.html#_=1330013339435&count=none&hashtags=allstar&id=twitter-widget-10&lang=en&original_referer=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Findex.html&related=%40nba&size=m&text=Sprite%20Slam%20Dunk%20Contest%20is%20trending%20on%20NBA%20All-Star%20Pulse%20&url=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Ftopics%2Fspriteslamdunk.html
Мне нужно получить последнюю часть перед «.html», который в приведенном выше примере выглядит так:
это похоже на% 2Ftopics% 2F
Не знаете, как извлечь это с помощью jQuery?
[РЕДАКТИРОВАТЬ] Похоже, я должен сделать это с Regex? Не много ли сделали с Regex в этом отношении ??
Полагаю, вам может понадобиться регулярное выражение "(\w+)\.html$"
"(\w+)\.html$"
Вы хотите получить строку до .html и после последнего появления %2F.
.html
%2F
Вы можете использовать регулярное выражение /%2F([^%]+?)(\.html$)/.\.html$ соответствует строке перед последним появлением;([^%]+?) part соответствует самой короткой строке, которая не включает % и до .html, что вы хотите получить;%2F исключает эту строку в совпадениях.
/%2F([^%]+?)(\.html$)/
\.html$
([^%]+?)
%
var str = "http://platform.twitter.com/widgets/tweet_button.1329950604.html#_=1330013339435&count=none&hashtags=allstar&id=twitter-widget-10&lang=en&original_referer=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Findex.html&related=%40nba&size=m&text=Sprite%20Slam%20Dunk%20Contest%20is%20trending%20on%20NBA%20All-Star%20Pulse%20&url=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Ftopics%2Fspriteslamdunk.html" var matches = str.match(/%2F([^%]+?)(\.html$)/) matches // => ["%2Fspriteslamdunk.html", "spriteslamdunk", ".html"] matches[1] // What you want.
var answer = url.substring (url.lastIndexOf ("% 2F") + 3) .replace (". Html", "")