4

フロントエンドリンクからCMS編集ページリンクにジャンプするJavaScriptブックマークレットを作成しようとしています。

したがって、このようなURLを取得します

http://www.example.com/events/13097/article

このようなURLを作成します

http://www.example.com/admin/edit.php?class=events&id=13097

正規表現を使用してクラスとIDを取得し、それをjavascript関数にラップする必要があると思いますが、私はまったくの初心者で、誰かが私を始められるかどうか疑問に思っていますか?

4

3 に答える 3

4

正規表現は必要ありません。これを試してください:

var url = ""+window.location;
var urlparts = url.split('/');
window.location = "http://www.example.com/admin/edit.php?class="+urlparts[3]+"&id="+urlparts[4];

URL からクラスと ID を分割し、リダイレクトで繰り返します。window.location最初の行は、これを行うためにも使用できる文字列にキャストしますがString(window.location)、それはより冗長です。

ドメインも取得するには、次を使用できます。

"http://"+urlparts[2]+"/admin/edit.php?class="+urlparts[3]+"&id="+urlparts[4]

編集:実際には、元のコードを使用してエミュレートするかurlpartsオブジェクト内の他の関心のある項目を取得できます(この投稿の例)window.location.href.split('/')window.location.toString().split('/')window.location

hash: "#10013173"
host: "stackoverflow.com"
hostname: "stackoverflow.com"
href: "https://stackoverflow.com/questions/10012966/change-url-with-bookmarklet/10013173#10013173"
origin: "http://stackoverflow.com"
pathname: "/questions/10012966/change-url-with-bookmarklet/10013173"
port: ""
protocol: "http:"
search: ""
于 2012-04-04T14:26:02.377 に答える
0

C# 単体テストで使用する正規表現の例を次に示します。正規表現に慣れていないため、パターンはソース URL と同じですが、2 つのキャプチャ グループ(1 つは class 用、(?<class>[^/]+)もう 1 つは id 用) を除きます(?<id>[^/]+)。それぞれがどのように機能するかは、スラッシュではない 1 つ以上の文字 (プラス) を取り、それを(^/)山かっこ内の名前の正規表現グループに格納することです。

var source = "http://www.domain.com/events/13097/article";
var expected = "http://www.domain.com/admin/edit.php?class=events&id=13097";
var pattern = "http://www.domain.com/(?<class>[^/]+)/(?<id>[^/]+)/article";
var r = new Regex(pattern);
var actual = r.Replace(source, "http://www.domain.com/admin/edit.php?class=${class}&id=${id}");
Assert.AreEqual(expected, actual);
于 2012-04-04T14:21:45.610 に答える
0
//var str = window.location.href;
var str = "http://www.example.com/events/13097/article";
var re = /events\/(\d+)\//;
var match = str.match(re);
var newURL = "http://www.example.com/admin/edit.php?class=events&id=" + match[1];
alert(newURL);
于 2012-04-04T14:22:36.340 に答える