我正在尝试通过拆分给定的 URL 来使用正则表达式创建一个简单的面包屑:
输入是这种形式的 URL - http://someurl.com:1000/sites/Site1/Pages/Programs/Programs1/Programs2/SomePage.aspx?a=b;c=d
预期的输出是 - 你在这里:sites>Site1>Pages>Programs>Programs1>Programs2>SomePage
这是我使用的代码:
<script type="text/javascript">
var url ="http://someurl:1000/sites/Site1/Pages/Programs/Programs1/Programs2/SomePage.aspx?a=b;c=d"
var newURL = url.replace(new RegExp( "^(?:([^:/?#]+):)?(?://((?:(([^:@]*):?([^:@]*))?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)", "g"),
function( $0, $1, $2, $3, $4, $5, $6, $7, $8, $9){
var domain = $1+ "://" + $2;
var href = domain;
var urlStrippedDown = $9;
//Split the folders/pages within the path /sites/Site1/Pages/Programs/Programs1/Programs2/SomePage.aspx
var pieces = urlStrippedDown.replace( new RegExp (\\w+.aspx)|(\\w+),
//Form the bread crumb with anchor tags and text
function ($0, $1, $2)
{
zero = $0;
var test = "<a href='" + href + urlStrippedDown.substring(0,urlStrippedDown.indexOf($0)+$0.length) +"'>" + zero.replace('.aspx','') + "</a>";
return test;
}
);
return pieces;
}
);
//document.write("You are here: " + newURL.replace(/\//g,''));
document.write("You are here: " + newURL);
</script>
面临的问题:我面临的唯一问题是最终输出(newURL)在每个链接之间有一个正斜杠(“/”),我想用“>”替换,但这似乎是不可能的。我不确定这个“/”是如何插入的,尽管在“锚”标签形成时它没有将其显示为文本的一部分。
预期的输出是 - 你在这里:sites>Site1>Pages>Programs>Programs1>Programs2>SomePage
而我得到 - 你在这里:/sites/Site1/Pages/Programs/Programs1/Programs2/SomePage 我无法用“>”替换这个“/”
PS:注释的代码行 - 如果我在这里替换,它会替换所有“/”,甚至是锚标签内的那些。“/”应该在文本中替换,而不是在锚的href中
正则表达式有缺陷吗?有没有更好的方法来处理这个问题?
谢谢!