मैं इस नियमित अभिव्यक्ति में नकारात्मक दशमलव संख्याओं को कैसे शामिल करूं?


90

मैं इस नियमित अभिव्यक्ति द्वारा नकारात्मक संख्याओं के साथ कैसे मेल खाता हूं? यह रेगेक्स सकारात्मक मूल्यों के साथ ठीक काम करता है, लेकिन मैं चाहता हूं कि यह नकारात्मक मूल्यों जैसे -10, -125.5 आदि को भी अनुमति दे।

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

धन्यवाद


1
@DanPuzey क्या आपने रेगेक्स को पोस्ट नहीं किया?
नोलोनार


मैंने शुरुआत में [-] जोड़ने की कोशिश की लेकिन यह काम नहीं किया। मैंने छोटे परिवर्तनों के संयोजन की भी कोशिश की
user1786107 14

यह कोशिश करें ^ -? \ d + (\। \ d +)? $
Civa

@DanPuzey आपके शब्द चर्चा में कुछ नहीं जोड़ते हैं और निर्दयी हैं
वासादामो

जवाबों:


176

आपको शुरुआत में एक वैकल्पिक हाइफ़न जोड़ना चाहिए -?( ?यह एक मात्रा का अर्थ है एक या शून्य घटनाएँ ):

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

मैंने इसे इन मूल्यों के साथ रुबुलर में सत्यापित किया:

10.00
-10.00

और दोनों अपेक्षा के अनुसार मेल खाते थे।


2
आपको डॉट से बचना चाहिए, यानी^-?[0-9]\d*(\.\d+)?$
एलेक्स श्वेस्टरोव

14
यदि आपके पास स्पष्ट रूप से कब्जे वाले संख्याओं (+10.00, कुछ अनुप्रयोगों में उपयोग किए जाने वाले) को कैप्चर करने की आवश्यकता है, तो आप उपयोग कर सकते हैं^[-+]?[0-9]\d*(\.\d+)?$
Cemafor

129

कुछ नियमित अभिव्यक्ति उदाहरण:

सकारात्मक पूर्णांक :

^\d+$

ऋणात्मक पूर्णांक :

^-\d+$

पूर्णांक :

^-?\d+$

सकारात्मक संख्या :

^\d*\.?\d+$

नकारात्मक संख्या :

^-\d*\.?\d+$

सकारात्मक संख्या या नकारात्मक संख्या :

^-?\d*\.{0,1}\d+$

फ़ोन नंबर :

^\+?[\d\s]{3,}$

कोड वाला फोन :

^\+?[\d\s]+\(?[\d\s]{10,}$

वर्ष 1900-2099 :

^(19|20)[\d]{2,2}$

दिनांक (dd mm yyyy, d / m / yyyy, आदि):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

आईपी ​​v4 :

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

11

मुझे नहीं पता कि आपको पहले इसकी आवश्यकता क्यों है [0-9]

प्रयत्न:

^-?\d*(\.\d+)?$

अपडेट करें

यदि आप यह सुनिश्चित करना चाहते हैं कि आपके पास वाले स्थान पर एक अंक होगा, तो उपयोग करें

^-?\d+(\.\d+)?$

1
शायद सिर्फ एक ही जगह पर एक अंक की गारंटी देने के लिए, ^-?\d+(\.\d+)?$अगर ऐसा है तो काम करना चाहिए
Cemafor

सबसे उपयुक्त जवाब। मुझे नहीं लगता कि स्वीकार किए गए उत्तर में दिखाया गया है [0-9] आवश्यक है।
उज़ुमाकीएल

3

अद्यतन (13/08/2014): यह सकारात्मक और नकारात्मक संख्याओं के लिए सबसे अच्छा कोड है =)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

मैंने इस संख्या के साथ प्रयास किया और ठीक काम करता है:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701

बदले -*के लिए -?, क्योंकि यह मेल खाता है -------------
टोटो

मैंने कुछ अतिरिक्त बदलाव किए, और अब ठीक काम करता है। कृपया जाँच करें कि =)
पाचो ज़ुनीगा


1

यह सकारात्मक और नकारात्मक दोनों पूर्णांकों की अनुमति देगा

ValidationExpression = "^ -? [0-9] \ d * (\ d +) $"


1

मेरे पास django url में regex के बारे में कुछ प्रयोग हैं, जिनकी आवश्यकता नकारात्मक से सकारात्मक संख्या तक है

^(?P<pid>(\-\d+|\d+))$

आइए हम इस (\-\d+|\d+)भाग पर ध्यान केंद्रित करते हैं और दूसरों को अनदेखा करते हैं, इस अर्धविराम का |अर्थ है या रीजेक्स में, फिर नकारात्मक मान इस \-\d+भाग के साथ मेल खाएगा , और इसमें सकारात्मक मूल्य\d+



1

यदि आपके पास यह है val="-12XXX.0abc23"और आप केवल दशमलव संख्या निकालना चाहते हैं, तो इस मामले में यह regex ( ^-?[0-9]\d*(\.\d+)?$) आपको इसे प्राप्त करने में मदद नहीं करेगा।
यह सही डिटेक्शन रेगेक्स के साथ उचित कोड है:

var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);


0

बस एक 0 या 1 टोकन जोड़ें:

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

आंद्रे ने मुझे इसे हराया, वह सही भी है, [0-9] टोकन की कोई आवश्यकता नहीं है।
बैंकिंसन



0

संख्या, वैकल्पिक दशमलव बिंदु, वैकल्पिक नकारात्मक के लिए नियमित अभिव्यक्ति:

^-?(\d*\.)?\d+$;

नकारात्मक पूर्णांक के लिए काम करता है, दशमलव, दशमलव के साथ नकारात्मक


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.