Теперь это тот случай, когда регулярные выражения будут иметь смысл. Использование подстроки здесь не будет работать из-за переменной длины строк.
В этом коде предполагается, что часть id не содержит косых черт.
var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid
-
.
будет соответствовать любому символу и
- вместе с
+
одним или несколькими символами
-
?
делает совпадение нежадным, поэтому оно останавливается при первом появлении /
в строке
Если часть идентификатора может содержать дополнительные косые черты, а последняя косая черта - это разделитель, то это регулярное выражение выполнит ваши заявки
var hash = "#asdf/a/sdfid/Blah-blah-blah";
hash.match(/#(.+?)\/[^\/]*$/)[1]; // asdf/a/sdfid
Просто для удовольствия есть версии, не использующие регулярные выражения.
Без идентификаторов в id-части:
var hash = "#asdfasdfid/Blah-blah-blah",
idpart = hash.substr(1, hash.indexOf("/"));
С косыми чертами в id-части (последняя косая черта - разделитель):
var hash = "#asdf/a/sdfid/Blah-blah-blah",
lastSlash = hash.split("").reverse().indexOf("/") - 1, // Finding the last slash
idPart = hash.substring(1, lastSlash);