2011-04-13 10 views
6

के नीचे संख्या जांच के लिए Regex मैं अभी भी regex पर एक शुरुआत कर रहा हूँ, इसलिए यह वर्तमान में मेरे ऊपर थोड़ा सा है।एक मूल्य

मैं दो पात्रों से संबंधित एक नंबर इनपुट को मान्य करने की जरूरत है और यह मूल्य से अधिक 12.

दो आसान अंक नहीं हो सकते:

/^\d{1,2}$/ 

तो जांच कर लें कि अगर वहाँ दोनों संख्याएं तो पहला या तो 0 या 1 होना चाहिए, और दूसरा 0, 1, या 2. होना चाहिए, उस भाग को मैं नियमित रूप से व्यक्त करने के बारे में नहीं जानता, नियमित रूप से ...

और यदि संभव हो तो भी मुझे चाहिए इसे एकल रेगेक्स स्टेटमेंट में रखने के लिए।

किसी भी मदद की सराहना की।

+1

मुझे संदेह है कि रेगेक्स ऐसा करने का सबसे अच्छा तरीका है। आप किस भाषा का उपयोग कर रहे हैं? – lonesomeday

+0

तो, उदा। '09' की अनुमति नहीं है? इसमें दो अक्षर हैं और दूसरा एक '[012] 'में नहीं है। – Piskvor

+0

यह संख्यात्मक इनपुट में केवल एक साधारण महीने सत्यापन है, जो कि पहले से ही व्यापक जेएस सत्यापन इंजन द्वारा मान्य है, रेगेक्स के कारण यह है कि मुझे रेगेक्स के साथ कुछ अभ्यास की आवश्यकता है और यदि अब नहीं है, और अब मैं पहले से ही मौजूदा नियमों को जोड़ रहा हूं। मैं गणनाओं के मानों का उपयोग नहीं कर रहा हूं, केवल दिनांक इनपुट इसलिए चरित्र सत्यापन पर्याप्त लगता है। प्रतिक्रियाओं के लिए सभी को धन्यवाद। – Forteasics

उत्तर

14

Regex इस तरह पर्वतमाला के साथ काम करने के लिए अनुकूल नहीं है, लेकिन फिर भी इस काम करना चाहिए:

/^(0?[1-9]|1[012])$/ 

विवरण:

^  match start of the string 
(0?  optional zero 
[1-9]  any number between 1 and 9 
|1[012]) or match 1 followed by either a 0, 1, 2 i.e. 10, 11, 12. 
$   match end of string 
+0

लेकिन एक वैकल्पिक 0 जोड़ें? पहले भाग के सामने बस – frisco

+0

मामले में, मैंने रेगेक्स को अपडेट किया है। 01, 02, 03, इत्यादि की अनुमति देनी चाहिएमुझे लगता है कि यह एक महीने की तारीख को मान्य करना है? ;-) यदि आप 012,013 आदि के लिए अनुमति नहीं देना चाहते हैं तो बस 0 को ले जाएं? पहले कोष्ठक के अंदर:/^ (0? [1-9] | 1 [012]) $/ –

+0

हाँ यह बिल्कुल सही है – Forteasics

2

इस तरह के कुछ (परीक्षण अगर एक पूर्णांक किसी दिए गए मान से कम है), आपको वास्तव में regex का उपयोग नहीं करना चाहिए। "चरित्र या तो एक्स, या y, या z के लिए

if ($variable <= 12) { 
    // OK 
} 
else { 
    // Not OK 
} 
+0

मैं एक जेएस सत्यापन इंजन (फॉर्म वैलिडेशन इंजन 2.0) का उपयोग कर रहा हूं ताकि एक और चेक लिखने या रेगेक्स को संशोधित करने के लिए काफी सरल हो, लेकिन मैं इसके बजाय कमजोर होने के बाद रेगेक्स पर विस्तार करना चाहता हूं। – Forteasics

0

:

इसके बजाय, बस एक साधारण हालत यह एक तरह का उपयोग करें (वाक्यविन्यास भाषा आप के साथ काम कर रहे हैं पर निर्भर करेगा) , या ... ", वहाँ चरित्र वर्ग है, वर्ग कोष्ठक में व्यक्त किया:

[012] 

का अर्थ है" 0, 1, याके किसी भी चरित्र"।

0
(0[0-9])|(1[0-2]) 

यह एक शून्य, एक मनमाना अंकों, या एक एक के बाद से मेल खाता है, से 0, 1 या 2 पीछा

0

0 [0-9] | 1 [0-2]

012,351,
Description: 

[0-9] : number between 00 and 09 
    | : or 
1[0-2] : and if starting with 1, next number should be between 0 -1 (testing 10-12) 
संबंधित मुद्दे