1

特定の 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-]/);
4

4 に答える 4

4

スラッグが常に最後のスラッシュに続き、最後のスラッシュの後の最初のコロンの前にあると仮定できる場合:

> 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"
于 2013-07-19T19:50:04.547 に答える
2

これは、最後のスラッシュ ( /) の後、最初のセミコンマ ( ) の前;の値を取得します。

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を獲得。

パフォーマンスが重要な問題である場合は、私の答えを検討してください。

于 2013-07-19T19:50:04.167 に答える
2

これを試して:

var slug = url.match(/.*\/([-a-z0-9]+)/i)[1];

.*\/最後の まですべてをスキップします/[-a-z0-9]+1 つ以上の英数字またはハイフンに一致します。後者を入れる(...)とキャプチャ グループになり[1]、最初のキャプチャ グループが返されます。

于 2013-07-19T19:40:34.713 に答える
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();

cr0のコメントに基づいて更新

var slug = url.split('/').pop().split(';')[0];
于 2013-07-19T19:43:46.480 に答える