我正在使用以下格式返回ID的Google API,我将其保存为字符串。如何在javascript中编写正则表达式,以便将字符串修剪为URL中最后一个斜杠后的字符。
var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9'
答案 0 :(得分:74)
不要写正则表达式!这对于字符串函数来说是微不足道的:
var final = id.substr(id.lastIndexOf('/') + 1);
如果您知道最后一部分总是16个字符,那就更容易了:
var final = id.substr(-16);
答案 1 :(得分:37)
一种略有不同的正则表达式方法:
var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];
打破这个正则表达式:
\/ 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
[1]
然后检索匹配中的第一个捕获的组
工作片段:
var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9';
var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];
// display result
document.write(afterSlashChars);
答案 2 :(得分:13)
以防其他人遇到这个帖子并且正在寻找一个简单的JS解决方案:
id.split( '/')。弹出(-1)
答案 3 :(得分:10)
这很容易理解(?!.*/).+
让我解释一下:
首先,让我们匹配最后有斜杠的所有内容,好吗? 这是我们不想要的部分
.*/
匹配所有内容,直到最后一个斜杠
然后,我们制作一个“否定前瞻”(?!)
来说“我不想要这个,丢弃它”
(?!.*)
这是“消极的向前看”
现在我们可以愉快地采取我们不想要的
.+
你可能需要逃避这样的事情:
(?!.*\/).+
答案 4 :(得分:9)
这应该有效:
last = id.match(/\/([^/]*)$/)[1];
//=> nabb80191e23b7d9
答案 5 :(得分:9)
这个正则表达式:[^\/]+$
- 像冠军一样工作:
var id = ".../base/nabb80191e23b7d9"
result = id.match(/[^\/]+$/)[0];
// results -> "nabb80191e23b7d9"
答案 6 :(得分:7)
不知道JS,使用其他例子(和猜测) -
id = id.match(/[^\/]*$/);
// [0]可选?
答案 7 :(得分:0)
为什么不使用替换?
"http://google.com/aaa".replace(/(.*\/)*/,"")
产生“ aaa”