特定の URL を分割して、正規表現を使用して簡単なパンくずリストを作成しようとしています。
入力は、この形式の URL です - http://someurl.com:1000/sites/Site1/Pages/Programs/Programs1/Programs2/SomePage.aspx?a=b;c=d
期待される出力は - 現在地: サイト>サイト 1>ページ>プログラム>プログラム 1>プログラム 2>サムページ
そして、ここに私が使用したコードがあります:
<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で、この「/」を「>」に置き換えることができません
PS: コードのコメント行 - ここを置き換えると、アンカー タグ内の "/" もすべて置き換えられます。「/」は、アンカーの href ではなく、テキストで置き換える必要があります
正規表現に欠陥はありますか? これを処理するより良い方法はありますか?
ありがとう!