2013-10-24 20 views
18

私はVimeoのURLからのビデオIDを抽出するために(スタックオーバーフローからそれを得た)使用している正規表現パターンを持っています指定されています。私は試しましたJavascriptの正規表現の任意の文字

var regExp = /http(s)?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/; 

しかし、これはhttpとhttpsの両方で失敗します。

助けてください。あなたは「S」オプションは、HTTP

s? 

すなわち、https?が一致するだけで使用したい場合は

+2

'var regExp =/https?:\/\ /(www \。)?vimeo \ .com \ /(\ d +)/;' – anubhava

+0

あなたは勝てますか?答えとしてポップダウン答えと私はあなたに目を与えます – Fraser

+0

なぜ '(s)?'が一致していないと 'sは'が驚いています。キャプチャグループの違いがあります。 –

答えて

38

あなたはキャプチャすることを意味し、余分なキャプチャグループを作成しているので、それが失敗しましたグループインデックスは以前と同じではありません。

キャプチャグループを作成せずにsオプションを作成するには、単に?を追加するだけでかまいません。

/https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/ 

非キャプチャグループを作成するには、(?:)を使用することができますが、それはここでは必要ありません、ただ例えば示す:

/http(?:s)?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/ 
11

とhttps

+0

これはどうやって動作しますか?ただ好奇心が強い –

+1

? charがオプションであることを意味します。 httpまたはhttpsをカバーします –

2

この正規表現は動作するはずです:

var regExp = /https?:\/\/(www\.)?vimeo\.com\/(\d+)/;