2010-08-10 9 views
16

सभी मैं करना चाहता हूँ 2-16 के बीच एक संख्या से मेल खाते हैं, 1 से 2 अंकों अंकनियमित अभिव्यक्ति - रेंज (2-16)?

http://www.regular-expressions.info/numericranges.html के अनुसार, वे 1 या 2 अंकों पर्वतमाला, लेकिन नहीं है कि कि both..if तक फैला के लिए उदाहरण है फैले है समझ में आता है।

The regex [0-9] matches single-digit numbers 0 to 9. [1-9][0-9] matches double-digit numbers 10 to 99. 

कुछ की तरह "^ [2-9] [1-6] $" 21 या यहाँ तक कि 96 lol मेल खाता है। किसी भी सहायता की सराहना की जाएगी।

उत्तर

32
^([2-9]|1[0-6])$ 

या तो 2 और 9 समावेशी के बीच एक अंक, या 1 के बाद 0 और 6 के बीच एक अंक के साथ मेल खाता है।

+1

सरल और बिंदु पर। +1। – Joey

+4

+1 और मेरा जवाब हटा दिया क्योंकि आपने मुझे 8 सेकंड तक हराया। –

+0

धन्यवाद! ** त्वरित नोट **, यदि आपको स्ट्रिंग के प्रारंभ से अंत तक मिलान करने की आवश्यकता नहीं है, या यदि आपको समूह को कैप्चर करने की आवश्यकता नहीं है: '(?: [2-9] | 1 [0-6]) ' – skplunkerin

6

सीमांकक (आदत से बाहर) के साथ: /^([2-9]|1[0-6])$/

regex ही बस है: ^([2-9]|1[0-6])$

+0

स्लेश PHP विशिष्ट हैं और संभवत: किसी सामान्य नियमित अभिव्यक्ति के बारे में बात करते समय हटा दिया जाना चाहिए। –

+4

@ बिली ओनेल: यह बिल्कुल PHP विशिष्ट नहीं है। इसका उपयोग किसी भी भाषा में किया जा सकता है जो आपको अपना डेलीमीटर चुनने देता है। – eldarerathis

+1

पर्ल उन्हें PHP से पहले था। किसी भी मामले में, वे अभिव्यक्ति का हिस्सा नहीं हैं, वास्तव में। अगर आपकी भाषा के लिए आपको ऐसा कुछ उपयोग करने की आवश्यकता है तो जो व्यक्ति पूछता है वह उन्हें आसानी से जोड़ सकता है। – Joey

1
^([2-9]|1[0-6])$ 

(संपादित करें:। स्पष्टीकरण के लिए निकाला गया उद्धरण)

+0

उद्धरण इस बात के लिए विशिष्ट हैं कि regex को प्रोग्रामिंग वातावरण में कैसे डाला जाएगा, लेकिन सार में regexes के बारे में बात करते समय शायद हटा दिया जाना चाहिए। –

+0

धन्यवाद; ठीक कर दिया। – alecov

+2

आपका रेगेक्स "^ [2-9] | 1 [0-6] $" गलत है, क्योंकि "|" "^" को पहले पैटर्न में और "$" को दूसरे से अलग करता है। आपको यहां कोष्ठक की आवश्यकता है, उदाहरण: "^ ([2-9] | 1 [0-6]) $" – vog

-1

(^ [2 -9] $ |^1 [0-6] $)

संख्याओं के प्रत्येक सेट के लिए प्रारंभ और रोक निर्दिष्ट करके आप अपनी तलाश कर रहे हैं रेगेक्स 36, 46, ... और इसी तरह भी वापस नहीं आएगा। मैंने उपर्युक्त समाधान की कोशिश की और पाया कि यह 2-16 की सीमा के भीतर रहने के लिए सबसे अच्छा काम करता है।

संबंधित मुद्दे