如何计算href的元素?

时间:2014-05-21 17:01:46

标签: javascript jquery html

我有一些Javascript可以解析网站的名称,这样我就可以查询XML文件来提取数据,其中节点的属性是URL的最后一部分。

<script> 
  function myExampleSite() 
  {
    var myURL = window.location.href;
    var dashIndex = myURL.lastIndexOf("-");
    var dotIndex = myURL.lastIndexOf(".");
    var result = myURL.substring(dashIndex + 1, dotIndex);
    return result;
  }

  var exampleSite = myExampleSite();
</script>

例如,如果站点为http://myexamplesite.com/status-Blah00,我将能够从Blah00 XML节点中获取所有数据,并使用XML中的任何内容填充站点的各个方面。

这很好用,我可以使用URL名称(Status-Blah00,Status-Blah01等)来查询XML,并根据站点名称填充页面上的元素。

但是我遇到了网站在网址中有第二个-的问题 例如:

http://myexamplesite.com/status-Blah01-Blah00.htm

它应该解析我的XML的Blah01-Blah00节点,而不是仅仅从Blah00获取数据,因为它不能识别第一个-。我是javascript的新手,我对如何基本做到感到困惑:

if 1 "-" in url then get last index 
else the number of "-" in url is > 1, get first index.

我怎样才能算出&#34; - &#34;在URL中,逻辑上只使用上面的Javascript吗?

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来解决此问题。这是一个开始:

"status-Blah01-Blah00.htm".match(/([^-]+)/g)

该代码生成数组:

["status", "Blah01", "Blah00.htm"]

因此,您可以使用该数组的长度来查找网址中有多少个连字符。

更简单:"status-Blah01-Blah00.htm".split('-')返回相同的数组。

答案 1 :(得分:0)

这是一个带有顺序正则表达式的单行,它可以处理在url中其他位置发生的破折号,并将Blah01-Blah00节点保持为单个字符串而不是将它们分开,就像你要求的那样。

"http://www.site-name.com/folder-name/01-10-20/status-Blah0100-Blah01.htm".match(/-([^.\/]+)\.htm/g)[0].match(/[A-z0-9][A-z0-9\-]+/g)[0]

生成:

"Blah0100-Blah01"