RegEx - 在URL中的最后一次删除后获取所有字符

时间:2013-11-04 20:57:53

标签: javascript regex

我正在使用以下格式返回ID的Google API,我将其保存为字符串。如何在javascript中编写正则表达式,以便将字符串修剪为URL中最后一个斜杠后的字符。

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

8 个答案:

答案 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”