2010-07-14 10 views
18

अनुमति देता है कोई मुझे इस regex बनाने में मदद कर सकता है। मुझे यह देखने के लिए जांचना है कि स्ट्रिंग या तो पूरी तरह से सफेद जगह (खाली) है या यदि इसमें केवल सकारात्मक पूर्ण संख्याएं हैं। अगर कुछ और विफल हो जाता है। अभी तक मेरे पास इतना ही है।regex केवल संख्या या खाली स्ट्रिंग

/^\s*|[0-9][0-9]*/ 
+1

[0-9] इस मेल करने के लिए [0-9] * [0-9] + – zvone

उत्तर

32

आप के लिए देख रहे:

/^(\s*|\d+)$/ 

आप अग्रणी शून्य के बिना एक सकारात्मक संख्या चाहते हैं, का उपयोग [1-9][0-9]*

आप व्हाइटस्पेस आसपास संख्या के बारे में परवाह नहीं करते हैं, आप यह भी कोशिश कर सकते हैं:

/^\s*\d*\s*$/ 

ध्यान दें कि आप आंशिक मिलान की अनुमति नहीं देना चाहते हैं, उदाहरण के लिए 123abc, इसलिए आपको शुरुआत और अंत एंकर की आवश्यकता है: ^...$
आपकी रेगेक्स में एक आम गलती है: ^\s*|\d+$, उदाहरण के लिए, पूरे मैच को लागू नहीं करता है, जैसा कि यह (^\s*)|(\d+$), पढ़ने, रिक्त स्थान प्रारंभ में या अंत में अंक जैसा ही है।

+0

जैसा ही आपका दूसरा उदाहरण केवल व्हाइटस्पेस से मेल खाता है यदि यह शुरुआत या अंत में है ... यह "1 2 3" – Cfreak

+0

@Cfreak - सही से मेल नहीं खाता। यह * * के आसपास * :) – Kobi

+0

@Cfreak, आप '1 2 3' – CaffGeek

1

आप है-

/^\d*$/ 

कोशिश कर सकते हैं सफेद अंतरिक्ष

/^[\s\d\s]*$/ 
+1

जो व्हाइटस्पेस से मेल नहीं खाता – Cfreak

3

कोबी साथ मिलान करने के लिए एक अच्छा जवाब है, लेकिन तकनीकी रूप से आप इसे पर कब्जा करने की जरूरत नहीं है (जब तक आप जा रहे हैं कुछ उत्पादन करने के लिए)

/^[\s\d]+$/ 

या यदि आप यदि स्ट्रिंग पूरी तरह से खाली है परवाह नहीं है (यानी "")

/^[\s\d]*$/ 

स्पष्ट करने के लिए मुझे मूल प्रश्न समझने के लिए स्ट्रिंग में व्हाइटस्पेस को अनदेखा किया जाना चाहिए।

+0

'/^[\ s \ d] * $ /' के साथ समस्या यह है कि यह '123 123' – CaffGeek

+1

जैसी चीजों से मेल खाती है जब तक कि मुझे गलत न हो, कोबी के जवाब में समूह कैप्चरिंग के लिए नहीं है संख्या, बल्कि एंकर ('^' और '$') को '|' ​​से दूर रखना है –

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

मैंने पाया कि यह मेरे लिए काम करता है।

  • 100,00
  • 101,00
  • 1000,00

विफल

किसी भी पूरी संख्या है, लेकिन केवल की .00

पास एक दशमलव अनुमति दें

  • 101,01
  • 1000,99

http://regexpal.com/

1

पर यह प्रयास करें एक नंबर या खाली स्ट्रिंग '' मैं मिलान करने के लिए।ई उपयोगकर्ता द्वारा दर्ज नहीं किया गया है किसी भी इनपुट इस

(^[0-9]+$|^$) 

कर एक नंबर, एक खाली स्ट्रिंग, या एक सफेद स्थान चरित्र

(^[0-9]+$|^$|^\s$) 

टेस्ट पर regex101

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