1

のような URL がありますhttp://mysite.com/#id/Blah-blah-blah。これは Ajax-ey ビットに使用されます。部品を使いたい、substring()またはsubstr()手に入れたいidID任意の長さの文字と数字の任意の組み合わせにすることができます。

これまでのところ、私は持っています:

var hash = window.location.hash;
alert(hash.substring(1)); // remove #

これによりフロント ハッシュが削除されますが、私は JS コーダーではなく、少し苦労しています。部分以外をすべて削除するにはどうすればよいidですか?最後のスラッシュの後には何も必要ありません ( /Blah-blah-blah)。

ありがとう!

ジャック

4

6 に答える 6

4

さて、これは正規表現が意味を持つケースです。文字列の長さが可変であるため、ここで部分文字列を使用しても機能しません。

このコードは、id 部分にスラッシュが含まれていないことを前提としています。

var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid
  • .任意の文字に一致し、
  • +1 つまたは複数の文字と一緒に
  • 文字列内で最初に出現した a で停止する?ように、一致を非貪欲にします。/

id 部分に追加のスラッシュを含めることができ、最後のスラッシュがセパレーターである場合、この正規表現はあなたの入札を行います

var hash = "#asdf/a/sdfid/Blah-blah-blah";
hash.match(/#(.+?)\/[^\/]*$/)[1]; // asdf/a/sdfid

楽しみのために、正規表現を使用しないバージョンを示します。

id-part にスラッシュはありません:

var hash = "#asdfasdfid/Blah-blah-blah",
    idpart = hash.substr(1, hash.indexOf("/"));

ID 部分にスラッシュを使用 (最後のスラッシュはセパレーター):

var hash = "#asdf/a/sdfid/Blah-blah-blah",
    lastSlash = hash.split("").reverse().indexOf("/") - 1, // Finding the last slash
    idPart = hash.substring(1, lastSlash);
于 2010-09-05T08:43:45.310 に答える
1

おそらく正規表現

window.location.hash.match(/[^#\/]+/)
于 2010-09-05T08:42:58.053 に答える
1
var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
    alert(matches[1]); 
}
于 2010-09-05T08:47:19.227 に答える
0

IndexOf を使用して ID の後の / の位置を決定し、string.substr(start,length) を使用して ID 値を取得します。

var hash = window.location.hash;
var posSlash = hash.indexOf("/", 1);
var id = hash.substr(1, posSlash -1)

/ がないことを確認するために、いくつかの検証コードを含める必要があります

于 2010-09-05T08:46:04.800 に答える
0

それを行うための最も簡単な方法は、おそらく次のとおりです。

function getId() {
    var m = document.location.href.match(/\/#([^\/&]+)/);
    return m && m[1];
}

このコードは、id の後に続くものについて何も想定していません (あったとしても)。キャッチされる ID は、スラッシュとアンパサンドを除くすべてです。

文字と数字のみをキャッチする場合は、次のように変更できます。

function getId() {
    var m = document.location.href.match(/\/#([a-z0-9]+)/i);
    return m && m[1];
}
于 2010-09-05T08:52:19.963 に答える
0

これは良いアプローチではありませんが、必要に応じて使用したい...

var relUrl = "http://mysite.com/#id/Blah-blah-blah";
var urlParts = [];
urlParts = relUrl.split("/"); // array is 0 indexed, so 
var idpart = = urlParts[3] // your id will be in 4th element
id = idpart.substring(1) //we are skipping # and read the rest 
于 2010-09-05T08:59:33.287 に答える