2 এর যথার্থতার সাথে দশমিকের জন্য সাধারণ নিয়মিত প্রকাশ


271

2 এর যথার্থতার সাথে দশমিকের জন্য নিয়মিত প্রকাশটি কী?

বৈধ উদাহরণ :

123.12
2
56754
92929292929292.12
0.21
3.1

অবৈধ উদাহরণ:

12.1232
2.23332
e666.76

দশমিক বিন্দু alচ্ছিক হতে পারে এবং পূর্ণসংখ্যাগুলিও অন্তর্ভুক্ত থাকতে পারে।


1
সম্পর্কিত: সহস্রতম
ইয়ো

1
: সেরা উত্তর এখানে stackoverflow.com/a/39399503/715269
Gangnus

উত্তর:


397

বৈধ regex টোকেন প্রয়োগ দ্বারা পরিবর্তিত হয়। একটি জেনেরিক ফর্মটি হ'ল:

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

আরও কমপ্যাক্ট:

\d+(\.\d{1,2})?

উভয়ই ধরে নিয়েছে যে উভয়ের কমপক্ষে একটি অঙ্ক আগে এবং দশমিক স্থানের পরে রয়েছে।

পুরো স্ট্রিংটি এই ফর্মের একটি সংখ্যা হওয়ার জন্য, শুরুর এবং শেষের ট্যাগগুলিতে (পার্লের ফর্মের মধ্যে) মতো এক্সপ্রেশনটি মোড়ানো:

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

একক সময়ের ( ) ইনপুট বাদ দিয়ে দশমিক ( .12) এবং পুরো সংখ্যার পূর্বে দশমিক ( ) পূর্বে অগ্রণী সংখ্যা ব্যতিরেকে ম্যাচ করতে , নিম্নলিখিত চেষ্টা করে দেখুন:12..

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

যোগ করা হয়েছে

এটি alচ্ছিক করতে ভগ্নাংশের অংশটি মোড়ানো ()?। সচেতন থাকুন যে এটি যেমন ফর্মগুলি বাদ দেয়12. আরও বেশি পছন্দ হবে^\d+\\.?\d{0,2}$

যোগ করা হয়েছে

^\d{1,6}(\.\d{1,2})?$পুনরাবৃত্তি থামাতে এবং দশমিক মানের পুরো অংশে একটি সীমাবদ্ধতা দেওয়ার জন্য ব্যবহার করুন ।


4
গাণিতিকভাবে, আমি মনে করি একটি নির্ভুল 2 সংখ্যার সর্বদা দুটি দশমিক হওয়া উচিত যদিও শেষ শূন্য হয়। এটি উল্লেখযোগ্য পরিসংখ্যানগুলির সাথে আমার অভিজ্ঞতার ভিত্তিতে তৈরি করা হয়েছে যাতে এটি ভুল হতে পারে তবে আপনি আসলে জানেন না যে 1.7 1.70 হয় বা 1.70 থেকে 1.74 পর্যন্ত কোনও সংখ্যা any
প্যাক্সিডিয়াবল

ধন্যবাদ! আমার ঠিক
যেমনটি

6
এটি 0001.00: /
21:40

2
যুক্ত হয়েছে '-?' এই ^ \ d + (\। \ d {1,2}) এ? $ ===> ^ -? \ d + (\। \ d {1,2})? supporting সমর্থন করার জন্য
মুরালি

1
@BimalDas আপনার সাথে অভিব্যক্তি prefixing দ্বারা নেগেটিভ সমর্থন করতে পারে না -?, হিসাবে -?\d+(\.\d{1,2})?। আমি নেতিবাচককে অন্তর্ভুক্ত করি না বা দশমিক পয়েন্ট দিয়ে শুরু করি না কারণ সেগুলি ওপির প্রশ্নে ছিল না, যদিও তারা অবশ্যই আরও জেনেরিক সংখ্যা বিন্যাসের জন্য বৈধ are মন্তব্যগুলির থ্রেডটি ".21" হ্যান্ডেল করার কয়েকটি উপায় দেয়।
ডকম্যাক্স

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

এবং যেহেতু নিয়মিত এক্সপ্রেশনগুলি পড়তে ভয়ঙ্কর, তাই কম বোঝা যায়, এখানে ভার্চুজের সমতুল্য:

^                         # Start of string
 [0-9]+                   # Require one or more numbers
       (                  # Begin optional group
        \.                # Point must be escaped or it is treated as "any character"
          [0-9]{1,2}      # One or two numbers
                    )?    # End group--signify that it's optional with "?"
                      $   # End of string

আপনি বেশিরভাগ নিয়মিত অভিব্যক্তি বাস্তবায়নের [0-9]সাথে প্রতিস্থাপন করতে পারেন \d( পিসিআরই সহ , সর্বাধিক সাধারণ)। আমি এটি [0-9]পড়া সহজ মনে করি হিসাবে এটি রেখেছি।

এছাড়াও, এটি পরীক্ষা করার জন্য আমি ব্যবহার করি পাইথন স্ক্রিপ্টটি:

import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")

valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]

assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0

দশমিকের আগে আমি সর্বোচ্চ 3 টি সংখ্যা চাই,
ভাগ্যবিহীন 0

3
@Raghurocks সরান +প্রথম ক্লোজিং paren পর^([0-9]{0,3})(\.[0-9]{1,2})?$
dbr

জাভা ব্যবহারকারীদের জন্য: দশমিকটি এড়াতে হবে না।

3
আপনি কি নিশ্চিত? এটি সম্ভবত এর \\.পরিবর্তে হওয়া উচিত \.কারণ .এটি দেখতে যেমন কাজ করবে ঠিক তেমন দেখা যাবে তবে কোনও অক্ষরের সাথে মেলে (কেবল দশমিক জায়গা নয়)। উদাহরণস্বরূপ, উভয়ই বৈধ বলে বিবেচিত হতে পারে 1z23এবং 1.23আপনি যদি এড়াতে না পারেন
dbr

@ ডিবিআর সম্ভবত এটিই হওয়া উচিত জাভা ঠিকই অনুচিত পলায়ন সম্পর্কে অভিযোগ করেছিল। এটি "স্থির করে" মুছে ফেলা হচ্ছে (এটি বন্ধ করুন), হ'ল আমি এখনও এটি পুরোপুরি পরীক্ষা করার সুযোগ পাইনি।

20

একটি alচ্ছিক বিয়োগ চিহ্নটি অন্তর্ভুক্ত করতে এবং 015( যেমন অষ্টাল সংখ্যার জন্য ভুল হতে পারে) নাম্বারগুলি অস্বীকার করতে লিখুন:

-?(0|([1-9]\d*))(\.\d+)?

এটি আমার জন্য দশমিকের আগে আলফাটিকে অনুমতি দিচ্ছে। X.25
বেঙ্গলটাইগার

1
এটি দশমিক স্থানের সংখ্যা 2 এর মধ্যে সীমাবদ্ধ করে না
দাউদ ইবনে করিম

13

এমন সংখ্যার জন্য যেখানে হাজার হাজার বিভাজক নেই, আমি এই সাধারণ, কমপ্যাক্ট রেজেক্স পছন্দ করি:

\d+(\.\d{2})?|\.\d{2}

বা, 2 এর নির্ভুলতার মধ্যে সীমাবদ্ধ নয়:

\d+(\.\d*)?|\.\d+

পরেরটি
1
100
100.
100.74
100.7
0.7
.7
.72 এর সাথে মেলে

এবং এটি খালি স্ট্রিংয়ের সাথে মেলে না (যেমন \ d *।? \ D * হবে)



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

12.গৃহীত মত জিনিস তৈরি করবে । এটি সাধারণত গ্রহণযোগ্য নয়, তবে যদি আপনাকে "নমনীয়" হতে হয় তবে সেটাই এক উপায়। এবং অবশ্যই এর [0-9]সাথে প্রতিস্থাপন করা যেতে পারে \d, তবে আমি অনুমান করি যে এটি আরও পাঠযোগ্য।



3

প্রধান উত্তরটি ভুল because কারণ এটির মান 5.বা 5,ইনপুট

এই কোডটি এটি পরিচালনা করে (তবে আমার উদাহরণে নেতিবাচক সংখ্যাগুলি নিষিদ্ধ):

/^[0-9]+([.,][0-9]{1,2})?$/;

ফলাফল হ'ল:

সত্য => "0" / সত্য => "0.00" / সত্য => "0.0" / সত্য => "0,00" / সত্য => "0,0" / সত্য => "1,2" সত্য => "1.1" / সত্য => "1" / সত্য => "100" সত্য => "100.00" / সত্য => "100.0" / সত্য => "1.11" / সত্য => "1,11" / মিথ্যা => "-5" / মিথ্যা => "-0.00" / সত্য => "101" / মিথ্যা => "0.00.0" / সত্য => "0.000" / সত্য => "000.25" / মিথ্যা => ".25" / সত্য => "100.01" / সত্য => "100.2" / সত্য => "00" / মিথ্যা => "5." / false => "6," / সত্য => "82" / সত্য => "81,3" / সত্য => "



2

সাধারণভাবে, অর্থাৎ সীমাহীন দশমিক স্থানগুলি:

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


1

না আপনি নিতে প্রয়োজন eমধ্যেe666.76 একাউন্টে?

সঙ্গে

(e|0-9)\d*\d.\d{1,2)

না, এটা প্রকল্পের আওতার বাইরে হবে! ধন্যবাদ যদিও, এটি সুবিধাজনক :)
ব্যবহারকারী 39221

1

আমার উত্তরটিও যুক্ত করে, কারও পক্ষে এটি দরকারী হতে পারে বা আমারও সঠিক হতে পারে।

function getInteger(int){
  var regx = /^[-+]?[\d.]+$/g;
  return regx.test(int);
}


alert(getInteger('-11.11'));

1

এটি আমার সাথে কাজ করেছে:

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

গোষ্ঠী 1 আপনার ভাসমান সংখ্যা এবং গ্রুপ 2 কেবল ভগ্নাংশ।


1

আমি আমার প্রকল্পের সাথে একটি চেষ্টা করেছিলাম। এটি + | -চিহ্নগুলির সাথে সংখ্যার পাশাপাশি অনুমতি দেয় ।

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

0

ক্রোম 56 এই ধরণের নিদর্শনগুলি গ্রহণ করছে না (ক্রোম 56 প্রকারের মতো 11.11. অতিরিক্ত বাড়িয়েছে)) প্রকার হিসাবে পাঠ্য হিসাবে প্রকারটি ব্যবহার করুন।


0

এটি ক্ষণস্থায়ী এবং 2 অঙ্ক পর্যন্ত দশমিকের অনুমতি দেবে,

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

ডেমো


এটি পূর্ণসংখ্যার সাথে মেলে না বা1.2e-10
টোটো

হ্যাঁ, আপনার সংশোধনের জন্য আপনাকে ধন্যবাদ। আমি এটি কেবল দশমিক সংখ্যার জন্যই ভেবেছিলাম
নাম্বি_0915

([0-9]+)?ভাল লেখা হয় \d*। এখন এটি মেলে না 10e3। এবং ওপি 2 সংখ্যা পর্যন্ত মিলতে চায়।
টোটো

-1
 function DecimalNumberValidation() {
        var amounttext = ;
            if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
            alert('Please enter only numbers into amount textbox.')
            }
            else
            {
            alert('Right Number');
            }
    }

ফাংশনটি যে কোনও দশমিক সংখ্যার আবহাওয়ার সংখ্যার দশমিক স্থান রয়েছে কিনা তা বৈধ করবে, এটি "ডান সংখ্যা" অন্যান্য বুদ্ধিমানের লোকটিকে বলবে "দয়া করে পরিমাণ পাঠ্যবক্সে কেবল সংখ্যা লিখুন enter" সতর্কতা বার্তা উপস্থিত হবে।

ধন্যবাদ ... :)

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