2015-06-11 2 views
5

मुझे एक राशि फ़ील्ड सत्यापित करने की आवश्यकता है, जो शून्य राशि नहीं होनी चाहिए। उदाहरण के लिए। यह नहीं0000,0.00,000.000,0 जा सकता है लेकिन यह 0.0001, 1.000,1.00,1234.00 आदि मूल्यों जा सकता है।यह जांचने के लिए नियमित अभिव्यक्ति है कि स्ट्रिंग में केवल शून्य है

@"[^1-9]+" और @"0+((\.0+)" का प्रयास किया लेकिन वे शून्य में प्रत्येक मान को अमान्य कर देते हैं।

+2

आप क्यों नहीं बस स्ट्रिंग एक नंबर और चेक में कनवर्ट न करें: यहां बताया अंकों 0 के लिए ऐसा करने के लिए का एक उदाहरण है अगर यह 0 है? –

+0

मुझे लगता है कि आपको बाद में राशि का उपयोग करने की आवश्यकता होगी ताकि जांच की जा सके कि संख्या 0 कितनी बेहतर समाधान होगी। – Sayse

+0

स्ट्रिंग को पार्स करने का प्रयास करें। यदि पार्स सफल होता है, तो इसे शून्य से गुणा करें, अगर आपको शून्य मिलता है तो इसमें केवल शून्य है। सरल समाधान;) –

उत्तर

8

मैं नहीं है तुम क्यों एक regex की जरूरत है, बस एक नंबर करने के लिए स्ट्रिंग में कनवर्ट करें और जांचें कि अगर 0 है देखें:

decimal actNumber; 
if(decimal.TryParse(myAmount, out actNumber) && actNumber > 0) 
{ /* ... */ } 

इस प्रकार आप भी बाद में वास्तविक संख्या का उपयोग कर सकते हैं।

+0

धन्यवाद HimBromBeere, यह मेरे लिए काम किया। – mukulsharma1146

1
^(?=.*?[1-9])\d+(\.\d+)?$ 

आप इस जो अगर वहाँ कम से कम एक [1-9] मान्य करेगा के लिए एक सरल lookahead उपयोग कर सकते हैं।

+0

या, सही .. .. .. हैप्पी, रेप शिकार .. :-) –

1

यदि आप केवल एक वर्ण वाले तारों की जांच करने के लिए नियमित अभिव्यक्ति चाहते हैं, तो आप केवल यह निर्दिष्ट कर सकते हैं कि चरित्र शुरुआत, अंत और हर जगह के बीच स्थित है।

regexp '^ [0] [0] * [0] $'

+0

आप किस प्रश्न का उत्तर दे रहे हैं? – Toto

+0

मैं ओपी नहीं हूं लेकिन मैं देर से धन्यवाद कहना चाहता हूं, मैंने इसके बारे में भी सोचा नहीं था। मुझे बहुत मदद की। – LargeCrimsonFish

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