"0 বাদ ব্যতীত কোনও ধনাত্মক পূর্ণসংখ্যার" জন্য রেজিেক্স কী?


95

^\d+$বর্জন করলে কীভাবে উন্নতি করা যায় 0?

সম্পাদনা করুন (এটিকে আরও কংক্রিট করুন):

অনুমোদনের উদাহরণ:
1
30
111
উদাহরণগুলি অস্বীকার করার জন্য:
0
00
-22

শীর্ষস্থানীয় শূন্য সহ ধনাত্মক সংখ্যার অনুমতি দেওয়া হয়েছে কিনা (উদাঃ 022) তাতে কিছু আসে যায় না।

এটি জাভা জেডিকে রেজেক্স বাস্তবায়নের জন্য।


4
আপনি উদাহরণস্বরূপ, গ্রহণ করতে চান 076?
কার্ল নচেটেল - বাড়ি থেকে

@ কার্ল নচেটেল: তবে আমি সরলতার জন্য এই বৈশিষ্ট্যটি ত্যাগ করতে পারি।
জিমি

4
"0 বাদে কোনও ধনাত্মক পূর্ণসংখ্যা" নোট করুন যে 0টি ধনাত্মক পূর্ণসংখ্য নয়।
এসকে 9

উত্তর:


183

এটা চেষ্টা কর:

^[1-9]\d*$

... এবং কিছু প্যাডিং 30 টি অক্ষরের SO উত্তর সীমা ছাড়িয়ে যাবে :-)।

এখানে ডেমো রয়েছে


কৌতূহলের বাইরে, কেন আমাদের শেষে \ d + দরকার? ^[1-9]+$কাজ করবে না কেন ?
মিমতাউকির

18
@ এমটাহেমেড: ^[1-9]+$10
রায়ান

4
এটি 1. কে অনুমতি দেবে "" allow d * "খালি স্ট্রিংয়ের সাথেও মেলে না।
ড্যানিয়েল

@ এমটাহেমেড ^[1-9]+$অনুমতি দেবে না 10। @ বহুমথ এই পরামর্শটি মঞ্জুরি দেবে 1, যেহেতু \d*শূন্য বা তার বেশি বার মিলছে matches যাইহোক, এটা মঞ্জুরি দেয় না 076, যেমন করে একটি শুরু হয় না [1-9]
কার্ল নচেটল - বাড়ি থেকে

4
তবে কি 01?
যাদুঘর

73

দেরিতে আসতে দুঃখিত তবে ওপি অনুমতি দিতে চায় 076তবে সম্ভবত অনুমতি দিতে চায় না 0000000000

সুতরাং এই ক্ষেত্রে আমরা কমপক্ষে একটি শূন্যহীন এক বা একাধিক সংখ্যার একটি স্ট্রিং চাই । এটাই

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

এটি ওপি যা চেয়েছিল তা পূরণ করছে বলে মনে হচ্ছে
আব্দুল

আমি ইতিবাচক পূর্ণসংখ্যার এবং ধনাত্মক দশমিক চাই। আপনার কোন সমাধান আছে?

আপনার মন্তব্যটি না করে নতুন প্রশ্ন হিসাবে জিজ্ঞাসা করা উচিত। তবে স্পয়লার: ^[0-9]*[1-9][0-9]*(\.[0-9]+)$তবে এটি আপনাকে "দশমিক" বলতে কী বোঝায় সে সম্পর্কে ধারণা তৈরি করছে। আপনার কি এক্সপোনেন্ট পার্টস দরকার? এটি বেশ জড়িত, সুতরাং অন্য একটি প্রশ্ন জিজ্ঞাসা করুন।
রায় তোয়াল

4
কর্নার কেস বিবেচনার জন্য +1! বিটিডব্লিউ এই প্যাটার্নটি ঠিক একই রকম কাজ করবে: ^0*[1-9]\d*$যেহেতু প্রথমটি [0-9]*কেবল [1-9]প্রথম অ-শূন্য না পাওয়া পর্যন্ত সক্রিয় থাকে অর্থাৎ প্রাথমিক জিরো ( 0*) না পাওয়া পর্যন্ত এটি সক্রিয় থাকে ।
mg007

4
এটি সঠিক উত্তর। এটি 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

4
আপনাকে ধন্যবাদ, তবে গৃহীত উত্তরের তুলনায় এটি কোনও মান বা কমনীয়তা যোগ করে না [1-9]\d*
জিমি

4
@ জিমি যা \ d হিসাবে সঠিক নয় তার মধ্যে এমন সংখ্যার অন্তর্ভুক্ত থাকতে পারে যা 0-9 নয়। উদাহরণস্বরূপ আরবী সংখ্যাগুলি কয়েকটি লাইব্রেরিতে একালের মতো।
ডামিদেভ

@ ডামিদেব আমি সে সম্পর্কে অবগত ছিলাম না। উল্লেখ করার জন্য আপনাকে ধন্যবাদ!
জিমি

দুর্ভাগ্যক্রমে এটি "123abcd" এর জন্য সত্য হবে।
চরিত জয়সঙ্কা

চারিথ জয়সঙ্কা - হ্যাঁ, এটি এখনও একটি শুরুতে এবং শেষে "" "" প্রয়োজন :-)
স্টিভ বারোটি

7

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

সামনের জিরো দ্বারা প্যাড করা থাকলেও এটিতে সমস্ত ধনাত্মক মান অন্তর্ভুক্ত থাকতে পারে

অনুমতি

01

10

11 ইত্যাদি

অনুমতি দেয় না

0

00

000 ইত্যাদি ..



2

এই পেয়েছেন:

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

কেউ মারছে? :)


4
এটি আপনাকে অনুমতি দেবে 00কি আপনি এটি চান? এবং এটি অনুমতি দেবে 1aaaaaএবং abcd01। চারপাশে এই ^$^([1-9]|[0-9]{2,})$
লাগানো

ভাল, এই গ্রহণ করে 000000000। আপনি শূন্য বাদে কোনও পূর্ণসংখ্যা বলেছিলেন ।
রায় তোয়াল

2

শুধু মজাদার জন্য, লুক হেডস ব্যবহার করে অন্য বিকল্প:

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

যতগুলি সংখ্যা আপনি চান, তবে কমপক্ষে একটি অবশ্যই হওয়া উচিত [1-9]


2

আপনি এটি চাইতে পারেন (সম্পাদনা করুন: ফর্মটির অনুমতি নম্বর 0123):

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

যাইহোক, যদি এটি আমার হয় তবে আমি এর পরিবর্তে করতাম

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

4
দুটি সমস্যা: এটি "123abc" এর সাথেও মেলে এবং 123 প্রদান করে এবং এটি পার্সেক্সেপশনকে ফেলে দিতে পারে।
ড্যানিয়েল

@ ড্যানিয়েল: আমি অনুমান করি যে এটি বৃহত্তর পার্সিং স্কিমের অভ্যন্তরে ব্যবহৃত হতে পারে, সুতরাং আপনার কাছে একটি রেইজেক্স / বিএনএফ থাকবে যা কেবলমাত্র অঙ্কগুলি ক্যাপচার করে এবং জাভা কোডটি ধরা হবে যে ধরা পড়া অঙ্কগুলি অ-শূন্য ধনাত্মক কিনা check
মিথ্যা রায়ান

@ ড্যানিয়েল: যাই হোক না কেন, আপনার এখনও ডেটা একটি পূর্ণসংখ্যার হিসাবে প্রয়োজন হবে এবং এত তাড়াতাড়ি বা পরে আপনাকে এখনও পার্সিয়ান্ট () কল করতে হবে বা আপনার নিজস্ব পার্সেন্ট () প্লে করতে হবে।
মিথ্যা রায়ান

@ ড্যানিয়েল: Integer.parseInt()নিজেই খুব সামান্য ওভারহেড যুক্ত করেছেন। ব্যয়বহুল যে ব্যয়বহুল তা নিক্ষেপ এবং আকর্ষণীয়।
অ্যালান মুর

@ মিথ্যা: \\+?উপসর্গগুলির সাথে চুক্তি কী ? আমি অনুমান করছি যে এটি একটি পালানো প্লাস চিহ্ন হিসাবে জাভা উত্স কোডে প্রদর্শিত হবে বলে মনে হচ্ছে, তবে কেন? যদি বিয়োগ চিহ্নগুলি অনুমোদিত না হয় তবে আমি মনে করি এটি অনুমান করা নিরাপদ এবং আরও লক্ষণগুলি বাইরে রয়েছে।
অ্যালান মুর

0

এই RegEx 0 এর মধ্যে যে কোনও পূর্ণসংখ্যার ইতিবাচক সাথে মেলে:

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

এটি দুটি নেতিবাচক লুকবিহাইন্ডের সাথে কাজ করে, যা সংখ্যার আগে বিয়োগের সন্ধান করে, যা এটি একটি নেতিবাচক সংখ্যা নির্দেশ করে। এটি -9 (যেমন -22) এর চেয়ে বড় কোনও নেতিবাচক সংখ্যার জন্যও কাজ করে।


0

আমার নিদর্শন জটিল, তবে এটি হ'ল "কোনও ধনাত্মক পূর্ণসংখ্যা, 0 বাদ" (1 - 2147483647, দীর্ঘ নয়) covers এটি দশমিক সংখ্যার জন্য এবং নেতৃস্থানীয় শূন্যগুলি অনুমতি দেয় না।

^((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

Of [1-9] * আমি ভাবতে পারি সবচেয়ে সহজ


এই নিয়মিত প্রকাশটি ভুল হিসাবে 10এবং এর মতো সংখ্যার সাথে মেলে ব্যর্থ হবে 29303। এটি খালি স্ট্রিংয়ের সাথেও মিলবে।
সর্বনিম্ন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.