2010-03-04 14 views
5

के बाद 3 नंबर तक की आवश्यकता है मुझे किसी संख्या से मेल खाने वाले रेगेक्स के साथ सहायता चाहिए। मुझे डॉट (।):रेगेक्स के साथ मदद - डॉट (।)

 
12345 ok 
12  ok 
12.1  ok 
12.12 ok 
12.123 ok 
12.1234 Error 
1.123456 Error 

यह कैसे करना है के बाद 3 अंकों की आवश्यकता है? अग्रिम में धन्यवाद।

+3

'12.': ठीक है या त्रुटि? '.123 'ठीक है या त्रुटि? '.': ठीक है या त्रुटि? –

उत्तर

3

आप कोशिश कर सकते हैं:

^\d+|(\d+\.\d{1,3})$ 
  • \d - एकल अंकों
  • \d+ - एक या अधिक संख्याएं, कि एक संख्या है।
  • \. - डॉट एक मेटाचर है। इसलिए शाब्दिक बिंदु से मिलान करने के लिए, आपको से बचने की आवश्यकता होगी।
  • {1,3} - 1 से 3 के बीच ( समावेशी) पिछली चीज़ की दोहराव।
  • ^ और $ - एंकर ताकि हम से पूरी बात न करें कुछ हिस्सा न करें।
13
\d+(?:\.\d{1,3})? 

स्पष्टीकरण:

 
\d+  # multiple digits 
(?:  # start non-capturing group 
    \.  # a dot 
    \d{1,3} # 1-3 digits 
)?   # end non-capturing group, made optional 
+0

अच्छा स्पष्टीकरण – IAbstract

1

क्या आप वाकई समस्या आप कर रहे हैं को हल करने के लिए regex की ज़रूरत है? कैसे के बारे में:

bool ContainsAtMostThreeNumbersAfterDot(string str) 
{ 
    int dotIndex = str.IndexOf("."); 
    float f; 
    return float.TryParse(str, out f) && str.Length - dotIndex < 3; 
} 

इस कोड है और न ही पूर्ण या 100% सही (ले सिर्फ एक विचार के रूप में है और विशिष्ट मामलों को संभाल), लेकिन IMHO, यह आशय एक बहुत अधिक स्पष्ट रूप से एक regex का उपयोग करने से व्यक्त करता है ऐसी समस्या को हल करने के लिए जिसे रेगेक्स की आवश्यकता नहीं है।

+3

'/ \ d + (?: \। \ D {1,3}) के लिए +1? /' मुझे स्पष्ट रूप से पढ़ता है ... –

+0

... रेगेक्स को जानने वाले किसी को भी स्पष्ट रूप से पढ़ता है। नियमित रूप से अभिव्यक्ति से परिचित नहीं होने वाले किसी भी व्यक्ति के लिए इरादा व्यक्त नहीं करता है और एक समस्या के लिए नियमित अभिव्यक्तियों की ताकत का एक बड़ा हिस्सा है जिसमें बहुत आसान और पठनीय समाधान होता है। – Marek

+0

यह एक ओवरकिल कैसा है? जो लोग रेगेक्स को जानते हैं, उनके लिए यह भाषा भाषा के मीठे स्थान पर पूरी तरह से गिरती है। और आप संभवतः अपने समाधान को आसान और अधिक पठनीय होने के बारे में गंभीर नहीं हो सकते हैं। मैं यह भी नहीं जानता कि 'TryParse' एपीआई को देखे बिना क्या करता है। – polygenelubricants

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