2012-08-23 6 views
7

मैं (शुरू में या अंत में नहीं किया जा सकता) संख्या की अनुमति देने के लिए रेगुलर एक्सप्रेशन और बीच में केवल एक ही hypen लिखने के लिए कोशिश कर रहा हूँ में संख्या और केवल एक हाइफन अनुमति देने के लिए कहते हैं कि पैटर्न: 02-04, 02 हैं स्वीकार्य लेकिन पैटर्न: -- या - या -02 या 04- या 02-04-06 अस्वीकार्य हैंRegex बीच

मैं कुछ इस तरह की कोशिश की लेकिन यह अनुमति होगी - शुरुआत में और भी कई अनुमति देते हैं -

'/^[0-9 \-]+$/' 

मैं रेगेक्स के साथ अच्छा नहीं हूं इसलिए थोड़ा सा स्पष्टीकरण वास्तविक सहायक होगा।

संपादित करें: इस के साथ आप फिर से बग के क्षमा करें, लेकिन मैं संख्या की जरूरत है केवल 2 अंक (123-346) अमान्य विचार किया जाना चाहिए की हो।

उत्तर

12

प्रयास करें यह एक:

/^\d{1,2}(-\d{1,2})?$/ 

एक या दो अंक, द्वारा पीछा किया, वैकल्पिक रूप से,

+1

मेरा जवाब वही है, लेकिन आपने मुझे इसे हरा दिया। तो मैंने एक स्पष्टीकरण जोड़ा, ऊपर उठाया, और अपना खुद का हटा दिया। – slim

+0

स्पष्टीकरण के लिए धन्यवाद @ स्लिम मुझे उस –

+0

की आवश्यकता है, इसके साथ आपको फिर से बग करने के लिए खेद है, लेकिन मुझे केवल 2 अंकों (123-346) होने की संख्या अमान्य माना जाना चाहिए। –

5

काफी आसान:

^\d+(-\d+)?$ 

कम से कम एक (+) अंकों (\d), एक हाइफ़न-माइनस (-) युक्त एक वैकल्पिक समूह द्वारा पीछा किया, फिर से कम से कम एक अंक की।

+0

लेकिन यह '02' अमान्य प्रस्तुत करेगा, क्योंकि आपकी अभिव्यक्ति –

+0

द्वारा एक हाइफ़न की आवश्यकता है, यह' 02' –

+0

से मेल नहीं खाएगा, क्षमा करें; उस हिस्से को नजरअंदाज कर दिया जिसने कहा कि हाइफ़न-माइनस वैकल्पिक है। अब तय इस आवश्यकता को प्रश्न में देखने में थोड़ा मुश्किल है, स्वीकार्य रूप से, पैटर्न के हर मौखिक स्पष्टीकरण जैसे हाइफ़न-माइनस की आवश्यकता होती है। – Joey

2

केवल उस पैटर्न वाली स्ट्रिंग के लिए (एक हाइफन एक या दो संख्याएं आती हैं) निम्नलिखित

काम करना चाहिए
^(\d{2}-)?\d{2}$ 

2 अंकों का एक समूह शून्य के बिना 2 अंकों के समूह के साथ समाप्त होने के बाद शून्य से समाप्त होता है।