2013-10-24 10 views
18

मैं एक regex पैटर्न है कि मैं (स्टैक ओवरफ़्लो से समझ में आ गया) एक Vimeo यूआरएल से एक वीडियो आईडी को निकालने के लिए उपयोग कर रहा हूँ है अधिकृत है। मैंनेजावास्क्रिप्ट Regex वैकल्पिक चरित्र

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

लेकिन यह http और https दोनों पर विफल रहता है।

एक भाई की मदद करें।

+2

क्या आप कोशिश कर सकते हैं: 'var regExp =/https?: \/\/(Www \।)? Vimeo \ .com \/(\ d +) /; ' – anubhava

+0

आप जीतते हैं! जवाब को उत्तर के रूप में पॉप करें और मैं आपको टिक – Fraser

+0

बता दूंगा कि क्यों '(ओं)?' मेल नहीं खाता है और 'है? कब्जा समूह का सिर्फ एक अंतर है। –

उत्तर

38

यह विफल रहता है, क्योंकि आप एक अतिरिक्त कैप्चरिंग समूह बना रहे हैं, कि कैप्चरिंग अर्थ समूह इंडेक्स पहले जैसा नहीं होगा।

कैप्चरिंग समूह बनाने के बिना s विकल्प बनाने के लिए, आप बस ? जोड़ सकते हैं, आपको कोष्ठक की आवश्यकता नहीं है।

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

एक गैर कैप्चरिंग समूह बनाने के लिए, आप (?:) उपयोग कर सकते हैं, लेकिन यह है कि, यहाँ आवश्यक नहीं है सिर्फ उदाहरण के लिए दिखा:

/http(?:s)?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/ 
11
यदि आप बनाने के लिए "एस" विकल्प, केवल का उपयोग

s? 

यानी, https? से मेल खाएगी http चाहते

और https

+0

हालांकि यह कैसे काम करता है? बस उत्सुक –

+1

? मतलब है कि चार वैकल्पिक है। तो यह http या https को कवर करेगा –

2

इस regex काम करना चाहिए:

var regExp = /https?:\/\/(www\.)?vimeo\.com\/(\d+)/; 
संबंधित मुद्दे