जवाबों:
निम्न का उपयोग करें:
/^\d*\.?\d*$/
^ - लाइन की शुरुआत;\d* - 0 या अधिक अंक;\.?- एक वैकल्पिक डॉट (बच गया, क्योंकि रेगेक्स में, .एक विशेष चरित्र है);\d* - 0 या अधिक अंक (दशमलव भाग);$ - पंक्ति का अंत।यह 0.5 के रूप में अग्रणी शून्य की आवश्यकता के बजाय .5 दशमलव के लिए अनुमति देता है
/^\d*\.?\d+$/जो दशमलव बिंदु के बाद एक अंक को बाध्य करेगा।
/\d+\.?\d*/
एक या अधिक अंक ( \d+), वैकल्पिक अवधि ( \.?), शून्य या अधिक अंक ( \d*)।
आपके उपयोग या रेगेक्स इंजन के आधार पर आपको स्टार्ट / एंड लाइन एंकर जोड़ने की आवश्यकता हो सकती है:
/^\d+\.?\d*$/

.खाली स्ट्रिंग दोनों से मेल खाता है ।
-।
आपको इसे ठीक से करने के लिए एक नियमित अभिव्यक्ति की आवश्यकता है:
/^[+-]?((\d+(\.\d*)?)|(\.\d+))$/
व्हाट्सएप के साथ एक ही अभिव्यक्ति, विस्तारित संशोधक का उपयोग करके (पर्ल द्वारा समर्थित):
/^ [+-]? ( (\d+ (\.\d*)?) | (\.\d+) ) $/x
या टिप्पणियों के साथ:
/^ # Beginning of string
[+-]? # Optional plus or minus character
( # Followed by either:
( # Start of first option
\d+ # One or more digits
(\.\d*)? # Optionally followed by: one decimal point and zero or more digits
) # End of first option
| # or
(\.\d+) # One decimal point followed by one or more digits
) # End of grouping of the OR options
$ # End of string (i.e. no extra characters remaining)
/x # Extended modifier (allows whitespace & comments in regular expression)
उदाहरण के लिए, यह मेल खाएगा:
और इन गैर-संख्याओं को अस्वीकार करेगा:
सरल समाधान गलत संख्याओं को अस्वीकार कर सकते हैं या इन गैर-संख्याओं से मेल खा सकते हैं।
^A?(B|C)$। पहले, यह लिखा गया था जैसे ^A?B|C$कि वास्तव में इसका मतलब है (^A?B)|(C$)जो गलत था। नोट: ^(A?B|C)$यह भी गलत है, क्योंकि इसका वास्तव में मतलब है ^((A?B)|(C))$जो "+.5" से मेल नहीं खाता।
इस regex का प्रयास करें:
\d+\.?\d*
वैकल्पिक दशमलव से पहले \ d + अंक
।? वैकल्पिक दशमलव (वैकल्पिक मात्रा के कारण)
\ d * दशमलव के बाद वैकल्पिक अंक
123.
मुझे लगता है कि यह सबसे अच्छा है क्योंकि यह सभी आवश्यकताओं से मेल खाता है:
^\d+(\\.\d+)?$
आप इसका उपयोग कर सकते हैं:
^\d+(\.\d)?\d*$
मैच:
11
11.1
0.2
मेल नहीं खाता:
.2
2.
2.6.9
यह जो मैंने किया है। यह उपरोक्त में से किसी से भी अधिक सख्त है (और कुछ की तुलना में अधिक सही है):
^0$|^[1-9]\d*$|^\.\d+$|^0\.\d*$|^[1-9]\d*\.\d*$
गुजरने वाले तार:
0
0.
1
123
123.
123.4
.0
.0123
.123
0.123
1.234
12.34
स्ट्रिंग्स जो विफल हो जाती है:
.
00000
01
.0.
..
00.123
02.134
^[+-]?(([1-9][0-9]*)?[0-9](\.[0-9]*)?|\.[0-9]+)$
प्रतिबिंबित करना चाहिए कि लोग आमतौर पर एक अच्छी तरह से गठित दशमलव संख्या के रूप में क्या सोचते हैं।
दशमलव बिंदु से पहले के अंक या तो एकल अंक हो सकते हैं, जिस स्थिति में यह 0 से 9 तक हो सकता है, या एक से अधिक अंक हो सकता है, जिस स्थिति में यह 0 से शुरू नहीं हो सकता है।
यदि दशमलव चिह्न से पहले कोई अंक मौजूद हैं, तो दशमलव और उसके बाद के अंक वैकल्पिक हैं। अन्यथा, एक दशमलव को कम से कम एक अंक के साथ उपस्थित होना होगा। ध्यान दें कि दशमलव बिंदु के बाद कई अनुगामी 0 की अनुमति है।
grep -E '^[+-]?(([1-9][0-9]*)?[0-9](\.[0-9]*)?|\.[0-9]+)$'
सही ढंग से निम्नलिखित से मेल खाता है:
9
0
10
10.
0.
0.0
0.100
0.10
0.01
10.0
10.10
.0
.1
.00
.100
.001
साथ ही उनके हस्ताक्षरित समकक्ष, जबकि यह निम्नलिखित को अस्वीकार करता है:
.
00
01
00.0
01.3
और उनके हस्ताक्षरित समकक्ष, साथ ही खाली स्ट्रिंग।
(?<![^d])\d+(?:\.\d+)?(?![^d])
साफ और सरल।
यह प्रत्यय और उपसर्ग, RegEx सुविधाओं का उपयोग करता है।
यह सीधे इस्मैच की स्थिति के लिए सही - गलत है
^\d+(()|(\.\d+)?)$
इसी के साथ आया। पूर्णांक और दशमलव दोनों की अनुमति देता है, लेकिन यदि आप एक दशमलव दर्ज करने का निर्णय लेते हैं तो एक पूर्ण दशमलव (अग्रणी और अनुगामी संख्या) को बाध्य करता है।
आपने जो पूछा है उसका पहले ही उत्तर दिया जा चुका है, इसलिए यह केवल उन लोगों के लिए एक अतिरिक्त जानकारी है जो वैकल्पिक दशमलव बिंदु में प्रवेश करने पर केवल 2 दशमलव अंक चाहते हैं:
^\d+(\.\d{2})?$
^: स्ट्रिंग
\ d की शुरुआत : एक अंक ([0-9] के बराबर)
+: एक और असीमित बार
समूह कैप्चरिंग (। \ D {2})?
? : शून्य और एक बार। : चरित्र।
\ d: एक अंक ([0-9] के बराबर)
{2}: ठीक 2 बार
$: स्ट्रिंग का अंत
1: मैच
123: मैच
123.00: मैच
123.: नो मैच
123 ..: नो मैच
123.0: नो मैच
123.000: नो मैच
123.00.00: नो मैच
Perl में, Regexp :: Common का उपयोग करें जो आपको अपने विशेष नंबर प्रारूप के लिए एक बारीक-ट्यून नियमित अभिव्यक्ति को इकट्ठा करने की अनुमति देगा। यदि आप पर्ल का उपयोग नहीं कर रहे हैं, तो उत्पन्न नियमित अभिव्यक्ति अभी भी आमतौर पर अन्य भाषाओं द्वारा उपयोग की जा सकती है।
Regexp में उदाहरण नियमित अभिव्यक्ति उत्पन्न करने का परिणाम मुद्रण :: सामान्य :: संख्या:
$ perl -MRegexp::Common=number -E 'say $RE{num}{int}'
(?:(?:[-+]?)(?:[0123456789]+))
$ perl -MRegexp::Common=number -E 'say $RE{num}{real}'
(?:(?i)(?:[-+]?)(?:(?=[.]?[0123456789])(?:[0123456789]*)(?:(?:[.])(?:[0123456789]{0,}))?)(?:(?:[E])(?:(?:[-+]?)(?:[0123456789]+))|))
$ perl -MRegexp::Common=number -E 'say $RE{num}{real}{-base=>16}'
(?:(?i)(?:[-+]?)(?:(?=[.]?[0123456789ABCDEF])(?:[0123456789ABCDEF]*)(?:(?:[.])(?:[0123456789ABCDEF]{0,}))?)(?:(?:[G])(?:(?:[-+]?)(?:[0123456789ABCDEF]+))|))
इसे इस्तेमाल करे। ^[0-9]\d{0,9}(\.\d{1,3})?%?$यह मेरे लिए परीक्षण और काम किया है।