2016-08-26 13 views
1

"pokemon /"と "/"の間の最後の数字を取得する文字列URLがあります。URL末尾のスラッシュの間の数字を取得するための正規表現パターン

"http://pokeapi.co/api/v2/pokemon/1/"

これまでのところ、私はこれを持っている -

var regexPat = /\/d+\// 
"http://pokeapi.co/api/v2/pokemon/1/".match(regexPat)[0].slice(1,2) // returns 1 

これを行うには、より効率的な方法はありますか?

+0

効率的ですか?どのような意味で? – Zereges

+0

ちょうど正規表現でやっているほうがクリーンな方法でしょうか? 1つの正規表現パターンで数を抽出する方法はありますか? – mangocaptain

答えて

2

あなたは/\/pokemon\/(\d+)\//正規表現で値を取り込むことができる:

var s = "http://pokeapi.co/api/v2/pokemon/1/"; 
 
var m = s.match(/\/pokemon\/(\d+)\//); 
 
if (m) { 
 
    console.log(m[1]); 
 
} 
 
// or 
 
console.log( 
 
    (res="http://pokeapi.co/api/v2/pokemon/1/".match(/\/pokemon\/(\d+)\//)) ? res[1] : "" 
 
);

詳細

  • \/pokemon\/ - リテラルテキスト/pokemon/
  • (\d+) - キャプチャグループ1が1桁以上一致する
  • \/ - a /シンボル。
+0

はキャプチャに使用されますか?どのように括弧に使用される用語は、私はどのように特定のパターンの間に正規表現をキャプチャする方法について学ぶことができますか? – mangocaptain

+0

'(...)'は[** capture group **]と呼ばれています(http://www.regular-expressions.info/brackets.html)。また、[* MDNのグループ化とバックリファレンス*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)を参照してください。複数の値をマッチさせ、キャプチャにアクセスする場合は、グローバル修飾子 '/ g'を正規表現とともに使用し、ループ内の' RegExp#exec'でそれを使用して各マッチオブジェクトを取得する必要があります。 'String#match'は、「グローバル」正規表現とともに使用すると、すべての取得値を破棄します。 –

関連する問題