特定の URL について、Javascript と正規表現を使用してそのスラッグを取得したいと考えています。私は以下を試しましたが、一致するだけで、一致h
しませんThis-is-the-slug-to-be-matched
。
var url = "http://www.domain.com/region/town/This-is-the-slug-to-be-matched;art6066,1184999";
var slug = url.match(/[a-z0-9-]/);
特定の URL について、Javascript と正規表現を使用してそのスラッグを取得したいと考えています。私は以下を試しましたが、一致するだけで、一致h
しませんThis-is-the-slug-to-be-matched
。
var url = "http://www.domain.com/region/town/This-is-the-slug-to-be-matched;art6066,1184999";
var slug = url.match(/[a-z0-9-]/);
スラッグが常に最後のスラッシュに続き、最後のスラッシュの後の最初のコロンの前にあると仮定できる場合:
> var url = "http://www.domain.com/region/town/This-is-the-slug-to-be-matched;art6066,1184999";
> var slug = url.split("/").pop().split(";")[0];
出力:
> console.log(slug);
"This-is-the-slug-to-be-matched"
これは、最後のスラッシュ ( /
) の後、最初のセミコンマ ( ) の前;
の値を取得します。
var slug = url.substring(url.lastIndexOf('/')+1, url.indexOf(';'));
したがって、この場合、slug == "This-is-the-slug-to-be-matched"
.
.split.pop()
回答と.subtring()
関数を比較すると.lastIndexOf()
、私の方法は少なくとも 35% 高速です。~2.6m ops/ secに対して~4m ops/secを獲得。
パフォーマンスが重要な問題である場合は、私の答えを検討してください。
これを試して:
var slug = url.match(/.*\/([-a-z0-9]+)/i)[1];
.*\/
最後の まですべてをスキップします/
。[-a-z0-9]+
1 つ以上の英数字またはハイフンに一致します。後者を入れる(...)
とキャプチャ グループになり[1]
、最初のキャプチャ グループが返されます。
さらに別の方法(スラッグで ;art6066,1184999 も必要だと思います)
var url = "http://www.domain.com/region/town/This-is-the-slug-to-be-matched;art6066,1184999";
var slug = url.split('/').pop();
var slug = url.split('/').pop().split(';')[0];