2012-04-21 26 views
23

मुझे जावास्क्रिप्ट और jQuery में उपयोग करने के लिए 12 12.2 1236.32 123.333 और +12.00 या -12.00 या ... 123.123 ... जैसे दशमलव/फ्लोट नंबरों के लिए नियमित अभिव्यक्ति की आवश्यकता है। धन्यवाद।नियमित अभिव्यक्ति?

उत्तर

49

वैकल्पिक रूप से मेल खाते हैं एक + या - शुरुआत, एक या अधिक दशमलव अंक, वैकल्पिक एक दशमलव बिंदु के बाद और एक या अधिक दशमलव अंक स्ट्रिंग के अंत util द्वारा पीछा किया पर:

/^[+-]?\d+(\.\d+)?$/ 

RegexPal

+1

शून्य से '[+ -]' में साइन इन करें '[+ -] 'से बचें? – jfriend00

+2

@ jfriend00 नहीं, यह होने की आवश्यकता नहीं है। कक्षा के आखिरी चरित्र के बाद से यह एक सीमा होने के लिए संभव नहीं है, इसलिए यह एक शाब्दिक ऋण चिह्न है। बस इसे अपने कंसोल में आज़माएं: '/^[+ -]? \ D + (\। \ D +)? $ /। Test ('- 1')' – Paulpro

+1

मुझे लगता है कि यह काम करता है, लेकिन इसकी आवश्यकता क्यों नहीं है बच निकले – jfriend00

3

सही अभिव्यक्ति के रूप में पालन किया जाना चाहिए:

012:

[+-]?([0-9]*[.])?[0-9]+ 

इस के लिए आवेदन

+1 
+1. 
+.1 
+0.1 
1 
1. 
.1 
0.1 

यहाँ अजगर उदाहरण है:

import re 
#print if found 
print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0'))) 
#print result 
print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0)) 

आउटपुट:

True 
1.0 

आप मैक का उपयोग कर रहे हैं, तो आप कमांड लाइन पर परीक्षण कर सकते हैं:

python -c "import re; print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))" 

python -c "import re; print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))" 
नहीं चाहिए
+0

यह बेहतर जवाब है क्योंकि मैं मेसर्स 9.5 मिमी या 9.5in इत्यादि डाल सकता हूं। इस +1 –

+1

@ IvijanStefanStipić के लिए धन्यवाद आपका स्वागत है – lbsweek

+0

इन मामलों को कवर नहीं करता है: 23..8789 या 4587.387.987। इससे मेरी मदद मिली: https://stackoverflow.com/a/30461355/1783439 –

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