首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript substring()技巧

Javascript substring()技巧
EN

Stack Overflow用户
提问于 2010-09-05 16:35:44
回答 6查看 2.4K关注 0票数 1

我有一个网址,看起来像http://mysite.com/#id/Blah-blah-blah,它是用来做Ajax-ey的。我想使用substring()substr()来获取id部件。ID可以是任意长度的字母和数字的任意组合。

到目前为止,我得到了:

代码语言:javascript
复制
var hash = window.location.hash;
alert(hash.substring(1)); // remove #

这删除了前面的散列,但我不是一个JS程序员,我正在努力。如何删除除id部件以外的所有内容?我不想要任何后面的东西,包括最后的斜杠(/Blah-blah-blah)。

谢谢!

杰克

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-05 16:43:45

现在,这是一个正则表达式有意义的情况。在这里使用子字符串将不起作用,因为字符串的长度可变。

这段代码将假设id部分不包含任何斜杠。

代码语言:javascript
复制
var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid

  • .将匹配任何字符和
  • 以及+一个或多个字符
  • ?使匹配变得非贪婪,以便它将在字符串

中第一次出现/时停止

如果id部分可以包含额外的斜杠,并且最后一个斜杠是分隔符,则此正则表达式将执行您的命令。

代码语言:javascript
复制
var hash = "#asdf/a/sdfid/Blah-blah-blah";
hash.match(/#(.+?)\/[^\/]*$/)[1]; // asdf/a/sdfid

只是为了好玩,这里有一些不使用正则表达式的版本。

id-part中没有斜杠:

代码语言:javascript
复制
var hash = "#asdfasdfid/Blah-blah-blah",
    idpart = hash.substr(1, hash.indexOf("/"));

在id-part中使用斜杠(最后一个斜杠是分隔符):

代码语言:javascript
复制
var hash = "#asdf/a/sdfid/Blah-blah-blah",
    lastSlash = hash.split("").reverse().indexOf("/") - 1, // Finding the last slash
    idPart = hash.substring(1, lastSlash);
票数 4
EN

Stack Overflow用户

发布于 2010-09-05 16:42:58

也许是一个正则表达式

代码语言:javascript
复制
window.location.hash.match(/[^#\/]+/)
票数 1
EN

Stack Overflow用户

发布于 2010-09-05 16:47:19

代码语言:javascript
复制
var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
    alert(matches[1]); 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3645484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档