2011-12-22 15 views
17

मैं अप करने के लिए दो दशमलव शून्य से अधिक स्थानों के साथ एक अंकीय मान के लिए एक रेगुलर एक्सप्रेशन से की जरूरत है और या इकाई के कॉलम में एक शून्य नहीं हो सकता है हो सकता है के साथ शून्य से अधिक। मुझे भी जोड़ना चाहिए .... पूरी संख्या ठीक है। नीचे somments देखें लेकिन उसके आगे या पीछे रिक्त स्थानRegex 2 दशमलव स्थानों

Good values: 
.1 
0.1 
1.12 
123.12 
92 
092 
092.13 

Error values: 
0 
0.0 
0.00 
00 
1.234 
-1 
-1.2 
Anything less than zero 
+0

बस की जांच करने से गुजरता है: दशमलव स्थानों 0' शामिल नहीं करना चाहिए 'और' 1 से भिन्न हो सकते हैं -2' स्थानों या '0-2' स्थानों? (या अलग ढंग से रख:?।। '.nn' भाग वैकल्पिक है – Regexident

+0

हाँ ... .nn भाग वैकल्पिक है तो पूरे नंबर स्वीकृत हैं मैं यह भी कहा कि सवाल THX – MikeTWebb

+0

कहाँ संख्या पाया जा सकता है चाहेंगे।? वे एक स्ट्रिंग के ही संतोष करना, या खाली स्थान के में संलग्न यह 'मैच के लिए 92' और की तरह महत्वपूर्ण है। – Regexident

उत्तर

40

कैसे इस बारे में:

^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$ 

स्पष्टीकरण: अजगर में

^   # Start of string 
\s*   # Optional whitespace 
(?=.*[1-9]) # Assert that at least one digit > 0 is present in the string 
\d*   # integer part (optional) 
(?:   # decimal part: 
\.   # dot 
\d{1,2}  # plus one or two decimal digits 
)?   # (optional) 
\s*   # Optional whitespace 
$   # End of string 

टेस्ट:

>>> import re 
>>> test = [".1", "0.1", "1.12", "123.12", "92", "092", "092.13", "0", "0.0", "0.00", "00", "1.234", "-1", "-1.2"] 
>>> r = re.compile(r"^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$") 
>>> for item in test: 
...  print(item, "matches" if r.match(item) else "doesn't match") 
... 
.1 matches 
0.1 matches 
1.12 matches 
123.12 matches 
92 matches 
092 matches 
092.13 matches 
0 doesn't match 
0.0 doesn't match 
0.00 doesn't match 
00 doesn't match 
1.234 doesn't match 
-1 doesn't match 
-1.2 doesn't match 
+0

यह जाने का रास्ता है। कि वोट दें लो। – Regexident

+0

रास्ता करीब है यही कारण है कि। केवल बात यह नहीं करता है ' टी सभी ow कोई leding शून्य के साथ .9 है उपयोगकर्ता शून्य में टाइप करने की ज़रूरत पसंद नहीं करता – MikeTWebb

+0

+1 - और मैं वास्तव में अपने टिप्पणी शैली की तरह 8 ^) – ridgerunner

1

[0-9]+\.[0-9]{1,2}

यही मिलेगा हो सकते हैं:

  • कम से कम एक संख्या
  • एक दशमलव बिंदु
  • एक या दो दशमलव बिंदु के बाद अंक।
+1

का ही संतुष्ट हैं यह 0.0 की अनुमति देता है और पूर्णांकों अनुमति नहीं है। –

+0

सुविधा भी देता है '0.00' (गलत) और अनुमति नहीं देता है' .1' (गलत) – AjahnCharles

1

/^[0-9]*(\.{1})?([0-91-9][1-9])?$/

यह कोशिश यह आपके सभी मामलों

+0

यह (गलत) 'से मेल नहीं खाता .1',' 0.1' और (गलत) '0' से मेल खाता है,' 00' – AjahnCharles

-3

यह अभिव्यक्ति शुरुआत में किसी भी सफेद रिक्त स्थान की अनुमति नहीं होगी और पिछले

/^\d*(?:\.\d{1,2})*$/ 
+0

यह मेल खाता है: '0',' 0.0', '0.00',' 00' (सभी जिनमें से सवाल में दिए गए नकारात्मक परीक्षण मामले थे)। – AjahnCharles

+0

^(([1-9] + ([।] [0-9] {1,3})?) | (0 [।] [0-9] {2} [1-9])) $ सोचें इस अपनी टिप्पणी में हालत –

+0

नए पैटर्न मच जाएगा (गलत) मैच के लिए 'विफल रहता है .1',' 0.1', '092',' 092.13', और (गलत) '1.234' – AjahnCharles

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