"किसी भी सकारात्मक पूर्णांक, 0 को छोड़कर" के लिए rexx क्या है


91

कैसे ^\d+$अस्वीकार करने के लिए सुधार किया जा सकता है 0?

EDIT (इसे और ठोस बनाएं):

अनुमति देने के उदाहरण:
1
30
111
को अस्वीकार करने के लिए उदाहरण:
0
00
-22

इससे कोई फर्क नहीं पड़ता कि एक प्रमुख शून्य के साथ सकारात्मक संख्या की अनुमति है या नहीं (जैसे 022)।

यह Java JDK Regex कार्यान्वयन के लिए है।


2
क्या आप उदाहरण के लिए, स्वीकार करना चाहते हैं 076?
कार्ल Knechtel - घर से दूर

@ कर्ल स्नेकटेल: लेकिन मैं इस सुविधा को सरलता के लिए त्याग सकता हूं।
Zeemee

3
“कोई भी धनात्मक पूर्णांक, 0 को छोड़कर” ध्यान दें कि 0 एक धनात्मक पूर्णांक नहीं है।
SK9

जवाबों:


176

इसे इस्तेमाल करे:

^[1-9]\d*$

... और कुछ पैडिंग 30 वर्ण से अधिक है तो उत्तर सीमा :-)।

यहाँ डेमो है


जिज्ञासा से बाहर, हमें अंत में \ d + की आवश्यकता क्यों है? ^[1-9]+$काम क्यों नहीं करेगा ?
mtahmed

18
@mtahmed: ^[1-9]+$10 को अनुमति नहीं देगा
रेयान

1
यह अनुमति देगा 1. "\ d *" भी खाली स्ट्रिंग से मेल खाता है।
डैनियल

@mtahmed ^[1-9]+$अनुमति नहीं देगा 10। @ मौलमोठ सुझाव देगा 1, क्योंकि \d*मैच शून्य या उससे अधिक बार होगा। हालाँकि, यह अनुमति नहीं देगा 076, क्योंकि यह एक के साथ शुरू नहीं होता है [1-9]
कार्ल Knechtel - घर से दूर

2
लेकिन इससे क्या 01?
1717

71

देर से आने के लिए क्षमा करें, लेकिन ओपी अनुमति देना चाहता है 076लेकिन शायद अनुमति नहीं देना चाहता है 0000000000

तो इस मामले में हम कम से कम एक गैर-शून्य वाले एक या अधिक अंकों की एक स्ट्रिंग चाहते हैं । अर्थात्

^[0-9]*[1-9][0-9]*$

ओपी जो चाहता था उसे पूरा करने के लिए यह लगता है
अब्दुल

मैं सकारात्मक पूर्णांक और सकारात्मक दशमलव चाहता हूं। आपके पास कोई उपाय है?

आपको टिप्पणी के बजाय एक नए प्रश्न के रूप में पूछना चाहिए। लेकिन बिगाड़ने वाला: ^[0-9]*[1-9][0-9]*(\.[0-9]+)$लेकिन यह एक धारणा बना रहा है कि आपको "दशमलव" से क्या मतलब है। क्या आपको घातांक भागों की आवश्यकता है? यह बहुत शामिल है, इसलिए एक और सवाल पूछें।
रे तोल

1
कोने के मामले पर विचार करने के लिए +1! BTW यह पैटर्न ठीक उसी तरह काम करेगा: ^0*[1-9]\d*$चूंकि पहला [0-9]*सक्रिय है जब तक [1-9]कि पहला गैर-शून्य नहीं मिल जाता है, यानी यह तब तक ही सक्रिय है जब तक कि शुरुआती शून्य ( 0*) नहीं हैं।
mg007

1
यह सही जवाब है। यह 00098 को स्वीकार करता है जो कि प्रश्न के अनुसार सही व्यवहार है।
वरुण शर्मा


12

यह एक कोशिश करो, यह एक आवश्यकता को पूरा करने के लिए सबसे अच्छा काम करता है।

[1-9][0-9]*

यहाँ नमूना आउटपुट है

String 0 matches regex: false
String 1 matches regex: true
String 2 matches regex: true
String 3 matches regex: true
String 4 matches regex: true
String 5 matches regex: true
String 6 matches regex: true
String 7 matches regex: true
String 8 matches regex: true
String 9 matches regex: true
String 10 matches regex: true
String 11 matches regex: true
String 12 matches regex: true
String 13 matches regex: true
String 14 matches regex: true
String 15 matches regex: true
String 16 matches regex: true
String 999 matches regex: true
String 2654 matches regex: true
String 25633 matches regex: true
String 254444 matches regex: true
String 0.1 matches regex: false
String 0.2 matches regex: false
String 0.3 matches regex: false
String -1 matches regex: false
String -2 matches regex: false
String -5 matches regex: false
String -6 matches regex: false
String -6.8 matches regex: false
String -9 matches regex: false
String -54 matches regex: false
String -29 matches regex: false
String 1000 matches regex: true
String 100000 matches regex: true

2
धन्यवाद, लेकिन स्वीकृत जवाब की तुलना में यह किसी भी मूल्य या लालित्य को नहीं जोड़ता है [1-9]\d*
ज़ीमी

1
@Zeemee जो \ d के रूप में सही नहीं है, इसमें वे अंक शामिल हो सकते हैं जो 0-9 नहीं हैं। उदाहरण के लिए कुछ पुस्तकालयों में واحد जैसे अरबी अंक।
डमीडेव

@ डमीडेव मैं इससे अवगत नहीं था। उल्लेख करने के लिए धन्यवाद!
Zeemee

अफसोस की बात है कि यह "123abcd" के लिए सही होगा।
चरिथ जयसंका

चेरिथ जयसंका - हाँ, इसे अभी भी शुरुआत में ^ और अंत में एक "$" की आवश्यकता है :-)
स्टीव बरोटी

7

^\d*[1-9]\d*$

इसमें सभी सकारात्मक मूल्य शामिल हो सकते हैं, भले ही यह सामने की ओर शून्य से हो

की अनुमति देता है

1

01

10

११ आदि

अनुमति नहीं है

0

00

000 आदि।


3

कोई सकारात्मक पूर्णांक, 0 को छोड़कर: ^\+?[1-9]\d*$
0 सहित कोई भी सकारात्मक पूर्णांक:^(0|\+?[1-9]\d*)$


2

यह मिल गया:

^[1-9]|[0-9]{2,}$

कोई इसे धड़कता है? :)


3
यह आपको ऐसा करने की अनुमति देगा 00? और यह अनुमति देगा 1aaaaaऔर abcd01^केवल पहले विकल्प और $केवल दूसरे के अंतर्गत आता है , इस पुट कोष्ठक को हल करने के लिए इसके चारों ओर^([1-9]|[0-9]{2,})$
stema

खैर, यह स्वीकार करता है 000000000। आपने शून्य को छोड़कर कोई पूर्णांक कहा था ।
रे तोल

2

सिर्फ मनोरंजन के लिए, लुकाहेड्स का उपयोग कर एक और विकल्प:

^(?=\d*[1-9])\d+$

जितने चाहें उतने अंक, लेकिन कम से कम एक होना चाहिए [1-9]


2

आप इसे चाहते हैं (संपादित करें: फ़ॉर्म की संख्या की अनुमति दें 0123):

^\\+?[1-9]$|^\\+?\d+$

हालाँकि, अगर यह मैं होता, तो मैं इसके बजाय करता

int x = Integer.parseInt(s)
if (x > 0) {...}

1
दो समस्याएं: यह "123abc" से भी मेल खाता है, और 123 देता है, और यह एक ParseException को फेंक सकता है।
डैनियल

@ डैनियल: मुझे लगता है कि इसका उपयोग एक बड़ी पार्सिंग योजना के अंदर किया जा सकता है, इसलिए आपके पास एक रेगीक्स / बीएनएफ होगा जो केवल अंकों को कैप्चर करता है, और एक जावा कोड यह जांचने के लिए कि कैप्चर किए गए अंक गैर-शून्य सकारात्मक हैं।
झूठ रेयान

@ डैनियल: किसी भी मामले में, आपको अभी भी पूर्णांक के रूप में डेटा की आवश्यकता होगी और इतनी जल्दी या बाद में आपको अभी भी parseInt () या अपने स्वयं के parseInt () को रोल करने की आवश्यकता होगी।
रेयान

@ डैनियल: Integer.parseInt()अपने आप में बहुत कम ओवरहेड जोड़ता है। यह फेंकना और अपवादों को पकड़ना महंगा है।
एलन मूर

@ लाइ: \\+?उपसर्गों के साथ क्या सौदा है? मैं अनुमान लगा रहा हूं कि यह जावा स्रोत कोड में प्रकट होने के साथ-साथ एक बच गया प्लस चिह्न भी होगा, लेकिन क्यों? यदि माइनस संकेतों की अनुमति नहीं है, तो मुझे लगता है कि यह मान लेना सुरक्षित है कि प्लस चिह्न भी बाहर हैं।
एलन मूर

0

यह RegEx 0 से बाहर किसी भी पूर्णांक सकारात्मक से मेल खाता है:

(?<!-)(?<!\d)[1-9][0-9]*

यह दो नकारात्मक रूप-रेखाओं के साथ काम करता है, जो एक संख्या से पहले माइनस की खोज करते हैं, जो इंगित करता है कि यह एक ऋणात्मक संख्या है। यह किसी भी नकारात्मक संख्या -9 (जैसे -22) से बड़ा काम करता है।


0

मेरा पैटर्न जटिल है, लेकिन यह बिल्कुल "किसी भी सकारात्मक पूर्णांक को शामिल करता है, जिसमें 0 को छोड़कर" (1 - 2147483647, लंबा नहीं है)। यह दशमलव संख्याओं के लिए है और अग्रणी शून्य की अनुमति नहीं देता है।

^((1?[1-9][0-9]{0,8})|20[0-9]{8}|(21[0-3][0-9]{7})|(214[0-6][0-9]{6})
|(2147[0-3][0-9]{5})|(21474[0-7][0-9]{4})|(214748[0-2][0-9]{3})
|(2147483[0-5][0-9]{2})|(21474836[0-3][0-9])|(214748364[0-7]))$

-2

^ [1-9] * $ सबसे सरल मैं सोच सकता हूं


यह नियमित अभिव्यक्ति ग़लती से इस तरह के रूप संख्या मैच के लिए असफल हो जायेगी 10और 29303। यह खाली स्ट्रिंग से भी मेल खाएगा।
सर्वव्यापी

-3

यह केवल दशमलव> 0 की अनुमति चाहिए

^([0-9]\.\d+)|([1-9]\d*\.?\d*)$
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.