RegEx - Get All Characters After Last Slash in URL

匿名 (未验证) 提交于 2019-12-03 02:12:02

问题:

I'm working with a Google API that returns IDs in the below format, which I've saved as a string. How can I write a Regular Expression in javascript to trim the string to only the characters after the last slash in the URL.

var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9'

回答1:

Don't write a regex! This is trivial to do with string functions instead:

var final = id.substr(id.lastIndexOf('/') + 1);

It's even easier if you know that the final part will always be 16 characters:

var final = id.substr(-16);


回答2:

A slightly different regex approach:

var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];

Breaking down this regex:

\/ match a slash (  start of a captured group within the match [^\/] match a non-slash character + match one of more of the non-slash characters )  end of the captured group \/? allow one optional / at the end of the string $  match to the end of the string

The [1] then retrieves the first captured group within the match

Working snippet:

var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9';  var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];  // display result document.write(afterSlashChars);



回答3:

This should work:

last = id.match(/\/([^/]*)$/)[1]; //=> nabb80191e23b7d9


回答4:

Don't know JS, using others examples (and a guess) -

id = id.match(/[^\/]*$/); // [0] optional ?



回答5:

Just in case someone else comes across this thread and is looking for a simple JS solution:

id.split('/').pop(-1)



回答6:

this is easy to understand (?!.*/).+

let me explain:

first, lets match everything that has a slash at the end, ok? that's the part we don't want

.*/ matches everything until the last slash

then, we make a "Negative lookahead" (?!) to say "I don't want this, discard it"

(?!.*) this is "Negative lookahead"

Now we can happily take whatever is next to what we don't want with this .+

YOU MAY NEED TO ESCAPE THE / SO IT BECOMES:

(?!.*\/).+



回答7:

this regexp: [^\/]+$ - works like a champ:

var id = ".../base/nabb80191e23b7d9"  result = id.match(/[^\/]+$/)[0];  // results -> "nabb80191e23b7d9"


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!