2010-03-24 16 views
5
संभावित गूंगा प्रश्न के लिए

क्षमा करें, लेकिन मैं एक साथ एक नियमित अभिव्यक्ति है कि अनुमति देगा खींचने की कोशिश कर रहा हूँ:नियमित अभिव्यक्ति या रिक्त

एक दशमलव बिंदु से पहले 1 या 2 संख्या के साथ एक नंबर, और 0-6 संख्या दशमलव बिंदु के बाद। हालांकि मुझे आवश्यक होने पर फ़ील्ड को रिक्त होने की भी आवश्यकता है।

मान्य उदाहरण

0.952321 
1.20394 
12.12 
25 
Blank 

अमान्य उदाहरण

123.45678 
1.1234567 

कृपया किसी को भी मदद कर सकते हैं?

+0

आप किस भाषा का उपयोग कर रहे हैं? – miorel

+0

खाली से आपका क्या मतलब है? – PierrOz

उत्तर

1

^(?:|\d{1,2}(?:\.\d{0,6})?)$

पाइप से पहले भाग खाली मेल खाता है। वैकल्पिक रूप से एक अवधि के बाद और छह अंकों तक के बाद एक या दो अंकों से मेल खाता है। ?: इसलिए हम आवश्यक होने तक कैप्चरिंग समूहों का उपयोग नहीं करते हैं।

आशा है कि इससे मदद मिलती है!

+0

आपके रेगेक्स में। अनिवार्य है: यह – PierrOz

+0

के ऊपर उदाहरण में 25 से मेल नहीं खाता है इस मेट –

+0

@PierrOz के लिए धन्यवाद, हाँ मैंने प्रश्न को दोबारा जांच लिया और इसे ठीक किया :) धन्यवाद! – miorel

11
^(?:\d{1,2}(?:\.\d{0,6})?)?$ 

चाल चलाना चाहिए।

\d  matches any digit 
{n,m} specifies the number of occurrences 
(?:) creates an anonymous group 
^  specifies the start of the string 
$    the end of the string 
?  means the group is optional 
+0

आपकी मदद के लिए धन्यवाद –

+3

@ फिल पी: यदि उत्तर में से कोई एक आपकी समस्या का समाधान करता है, तो सबसे अच्छा जवाब देता है और/या स्वीकार करता है। दशमलव के साथ समाप्त होने वाली संख्या से मेल नहीं खाते के लिए – AxelEckenberger

2

आपको उस भाषा को प्रदान करना चाहिए जिसमें आप नियमित अभिव्यक्ति का उपयोग कर रहे हैं, कई में ऐसी विशेषताएं हैं जो आपको अधिक पठनीय अभिव्यक्तियां बनाने की अनुमति देगी।

^([0-9]{1,2}\.[0-9]{0,6})?$ 

तो दशमलव भाग वैकल्पिक है, आप

^([0-9]{1,2}(\.[0-9]{1,6})?)?$ 
+0

+1 (उदा। "25.")। हालांकि इस सवाल में स्पष्ट रूप से नहीं बताया गया है, मैं उस आवश्यकता को मानता हूं। – Mark

0
^(\d{1,2}(\.\d{1,6})?)?$ 
+0

आपका रेगेक्स 8 अंकों वाला पूर्णांक से मेल खाता है। – miorel

+0

@Miorel: आह हा आप सही हैं :) मुझे लगता है कि हम अंत में एक ही होगा :) – PierrOz

+0

शायद;) मुझे पसंद है कि आपने खाली विकल्प कैसे संभाला है, मुझे इसे बदलना चाहिए! इस सामूहिक कार्य के लिए – miorel

0

पढ़ना लाइनों के बीच का उपयोग कर सकते हैं, मैं स्वीकार्य इनपुट की परिभाषा का विस्तार किया और नहीं और: यहाँ एक असफल-सुरक्षित POSIX regex है माना जाता है कि आप केवल वर्णित प्रारूप में संख्या को कैप्चर करना चाहते थे।

उदाहरण के लिए, इन नंबरों सही करने के लिए संख्या के रूप में पकड़ने और सभी स्वीकार्य इनपुट हैं जाएगा:

"0.952321 " 0.952321    (trailing spaces stripped)  
" 1.20394 " 1.20394    (leading and trailing spaces stripped) 
"12.12"   12.12    (no leading or trailing spaces) 
"12.123 "  12.123 
" .1234 "   .1234    (no leading digit -- start with decimal) 
"25"     25    (no decimal) 
" "    " " ?    (space. space captured or not) 
"12."    12.    (1 or 2 digits, decimal, no numbers after decimal) 

ठीक नहीं इनपुट:

"."         just a decimal 
"123456789"       more than 2 digits lefthand 
123          ""  "" 
123.45678 
1.1234567        more than 6 digits right hand 
[a-zA_Z]        not a digit... 

तो, कि यह देखते हुए, इस regex करना होगा यह:

/^\s*(     # beginning of string and strip leading space         
| \d{1,2}\.?   # 1 or 2 digits with optional decimal 
| \d{0,2}\.\d{1,6}  # 0,1, 2 digits with a decimal with digits 
| \s+     # remove if you do not want to capture space 
)\s*$     # trailing blanks to the end 
/x 
0

सामान्य रूप से, यानीअसीमित दशमलव स्थानों:

^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$

0

मैं इनमें से एक का प्रयोग करेंगे:

अपने दशमलव के सभी मिलान करने के लिए: पहले संख्या में और अधिक विशिष्ट होना करने के लिए

(\d+\.\d+){0,1} 

/बिंदु के बाद, इनमें से किसी के साथ प्रयास/विविधता:

(\d+\.\d{2}){0,1} 
(\d{4}\.\d{2}){0,1} 
संबंधित मुद्दे