2013-03-27 9 views
5

मैं अपने मुद्रा क्षेत्र को regex के साथ मान्य करना चाहता हूं। मैं निम्नलिखित पैटर्न प्रविष्टियों को अनुमति देना चाहता हूंदो दशमलव के साथ पूर्णांक या फ़्लोटिंग बिंदु संख्या के लिए regex

1.23 
1 
.45 
0.56 
56.00 

कोई अल्पविराम की अनुमति नहीं दी जानी चाहिए। मैंने \d+(\.\d\d) की कोशिश की है लेकिन यह केवल पहली, चौथी और पांचवीं प्रविष्टियों की अनुमति देता है। \d+(?:\.\d\d+)? सभी को तीसरे स्थान की अनुमति देता है।

+0

क्या आपने \ d * (\। \ D *) की कोशिश की है? – Melanie

+0

नहीं। मुझे कोशिश करने दो। –

+0

वह मुद्राएं कैसे हैं? मैं केवल फ्लोट देखता हूं। – Bergi

उत्तर

7

शून्य या अधिक अंकों से मेल खाने के लिए दशमलव से पहले \d+ के बजाय \d* का उपयोग करें। एंकर भी जोड़ें (^ और $) या अन्यथा यह तब तक होगा जब तक कोई मिलान उपलब्ध न हो। यह भी एक खाली स्ट्रिंग को मान्य होता है, इसलिए यदि आवश्यक हो तो आप यकीन है कि वहाँ है करने के लिए एक अग्रदर्शी उपयोग कर सकते हैं कम से कम एक अंकों:

\d*\.?\d+ 

के लिए कम से कम दो:

^(?=.*\d)\d*(?:\.\d\d)?$ 
+0

आपका समाधान अच्छी तरह से काम करता है। लेकिन यह '1.254' और' 23.1' की अनुमति देता है। मैं केवल दो दशमलव स्थानों की अनुमति देना चाहता हूं। या तो कोई दशमलव या केवल दो दशमलव –

+0

@ कृष्णुदेई नहीं होगा जो मेरे लिए अस्पष्ट नहीं थे; मैंने इसे अपडेट किया ताकि '\ d +' 'd \ d' –

+0

@ExplosionPills: वह काम किया गया। :) बहुत बहुत धन्यवाद। –

3

Regexes for floating-point numbers एक हल समस्या है दशमलव:

(\d*\.\d)?\d+ 

यह अधिक सुबोध बनाने के लिए:

\d+|\d*\.\d{2,} 

और ठीक दो दशमलव के लिए:

\d+|\d*\.\d{2} 

अपनी भाषा के आधार पर, अभिव्यक्ति anchor के लिए मत इतना है कि यह पूरी स्ट्रिंग से मेल खाना चाहिए है।

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