我有一些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吗?
答案 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"