现在,这是正则表达式有意义的情况。由于字符串的长度可变,在此处使用子字符串将不起作用。
此代码将假定 id 部分不包含任何斜杠。
var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid
- 将
.
匹配任何字符和
- 连同
+
一个或多个字符
- 使
?
匹配非贪婪,因此它将/
在字符串中第一次出现 a 时停止
如果 id 部分可以包含额外的斜杠并且最后的斜杠是分隔符,则此正则表达式将执行您的出价
var hash = "#asdf/a/sdfid/Blah-blah-blah";
hash.match(/#(.+?)\/[^\/]*$/)[1]; // asdf/a/sdfid
只是为了好玩,这里是不使用正则表达式的版本。
id-part 中没有斜杠:
var hash = "#asdfasdfid/Blah-blah-blah",
idpart = hash.substr(1, hash.indexOf("/"));
在 id-part 中使用斜杠(最后一个斜杠是分隔符):
var hash = "#asdf/a/sdfid/Blah-blah-blah",
lastSlash = hash.split("").reverse().indexOf("/") - 1, // Finding the last slash
idPart = hash.substring(1, lastSlash);