我有一个网址,看起来像http://mysite.com/#id/Blah-blah-blah,它是用来做Ajax-ey的。我想使用substring()或substr()来获取id部件。ID可以是任意长度的字母和数字的任意组合。
到目前为止,我得到了:
var hash = window.location.hash;
alert(hash.substring(1)); // remove #这删除了前面的散列,但我不是一个JS程序员,我正在努力。如何删除除id部件以外的所有内容?我不想要任何后面的东西,包括最后的斜杠(/Blah-blah-blah)。
谢谢!
杰克
发布于 2010-09-05 16:43:45
现在,这是一个正则表达式有意义的情况。在这里使用子字符串将不起作用,因为字符串的长度可变。
这段代码将假设id部分不包含任何斜杠。
var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid.将匹配任何字符和+一个或多个字符?使匹配变得非贪婪,以便它将在字符串中第一次出现/时停止
如果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);发布于 2010-09-05 16:42:58
也许是一个正则表达式
window.location.hash.match(/[^#\/]+/)发布于 2010-09-05 16:47:19
var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
alert(matches[1]);
}https://stackoverflow.com/questions/3645484
复制相似问题