Simplă expresie regulată pentru o zecimală, cu o precizie de 2

Ceea ce este expresia regulată pentru o zecimală, cu o precizie de 2?

Valabil exemple:

123.12
2
56754
92929292929292.12
0.21
3.1

Invalid exemple:

12.1232
2.23332
e666.76

Punctul zecimal poate fi opțional, și numere întregi poate fi, de asemenea, incluse.

Comentarii la întrebare (2)
Soluția

Valabil regex jetoane varia în funcție de punerea în aplicare. O formă generică este:

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

Mai compact:

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

Ambele presupune că ambele au cel puțin o cifră înainte și una după zecimală.

Pentru a solicita întregul șir este un număr de această formă, folie expresia în începutul și sfârșitul tag-uri, cum ar fi (în Perl's forma):

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

Pentru a se potrivi numere fără un lider cifre înainte de virgulă (.12) și numere întregi având un sfârșit de perioadă (12.) în timp ce cu excepția intrare de o singură perioadă (.), încercați următoarele:

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

Adăugat

Înfășurat în partea fracțională în ()? pentru a face opțional. Fi conștienți de faptul că aceasta exclude forme, cum ar fi 12. Inclusiv că ar fi mai mult ca ^\d+\\.?\d{0,2}$.

Adăugat

Utilizarea ^\d{1,6}(\.\d{1,2})?$ pentru a opri repetarea și să dea o restricție a parte din valoarea zecimală.

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

Și de când expresiile regulate sunt oribil de citit, cu atât mai puțin să înțeleagă, aici este detaliată în echivalent:

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

Puteți înlocui [0-9] cu \d in cele mai multe expresie regulată implementare (inclusiv PCRE, cele mai frecvente). Am'am lăsat-o ca [0-9], cum cred's ușor de citit.

De asemenea, aici este simplu Python script-am folosit pentru a verifica:

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
Comentarii (7)

Pentru a include, opțional, un semn minus și de a interzice numerele de ca 015 (care pot fi confundate cu octal numerele) scrie:

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

Pentru numerele care nu't au un separator de mii, îmi place acest joc simplu, compact regex:

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

sau, să nu fie limitată la o precizie de 2:

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

Acesta din urmă corespunde
1
100
100.
100.74
100.7
0.7
.7
.72

Și asta nu't se potrivesc șir gol (ca \d.?\d ar)

Comentarii (1)

Eu il folosesc pe asta pentru până la două zecimale:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$) trece:
.25
0.25
10.25
+0.25

nu't pass:
-.25
01.25
1.
1.256

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

Va face lucruri cum ar fi 12. acceptat. Acest lucru nu este ceea ce este general acceptat, dar dacă în cazul în care aveți nevoie pentru a fi "flexibil", care este o modalitate de a merge. Și, desigur, [0-9] poate fi înlocuit cu `\d, dar cred că e mai ușor de citit în acest mod.

Comentarii (0)

Încercați acest lucru

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

Aceasta va permite semne pozitive și negative, de asemenea.

Comentarii (0)

Principalul răspuns este GREȘIT, pentru că valids 5. sau 5, intrări

acest cod se ocupe de asta (dar la mine de exemplu numerele negative sunt interzise):

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

rezultatele sunt mai jos:

adevărat => "0" / true => "0.00" / true => "0.0" / true => "0,00" / true => "0,0" / true => "1,2" adevărat => "1.1"/ true => "1" / true => "100" adevărat => "100.00"/ true => "100.0" / true => "1.11" / true => "1,11"/ false => "-5" / false => "-0.00" / true => "101" / false => "0.00.0" / true => "0.000" / true => "000.25" / false => ".25" / true => "100.01" / adevărat => "100.2" / true => "00" / false => "5." / false => "6," / true => "82" / true => "81,3" / true => "7" / true => "7.654"

Comentarii (0)

În general, adică nelimitat zecimale:

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

Comentarii (0)
preg_match("/^-?\d+[\.]?\d\d$/", $sum)
Comentarii (0)

Aceasta a lucrat cu mine:

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

Grupul 1 e ta float număr și grupa 2 este fracțiunea numai.

Comentarii (0)

Am incercat unul cu proiectul meu. Aceasta permite numere cu + | - semne la fel de bine.

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

A câștigat't trebuie să ia " e " în e666.76 în considerare?

Cu

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

adăugarea de raspunsul meu, cineva s-ar putea găsi că este util sau poate fi corecta a mea.

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

alert(getInteger('-11.11'));
Comentarii (1)

Chrome 56 nu este acceptat acest tip de modele (Chrome 56 este accpeting 11.11. o suplimentare .) cu numărul de tip, utilizați tipul de text ca de progres.

<input type="text" ng-model="/^[0-9]+(\.[0-9]{1,2})?$/" />
Comentarii (0)

Acest lucru va permite zecimal cu exponentiala si pana la 2 cifre ,

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

Demo

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

funcția va valida orice număr zecimal caracterul numărul de zecimale sau nu, se va spune "Numărul Corect" altfel "vă Rugăm să introduceți numai numere în sumă casuta." mesaj de alertă va veni.

Multumesc... :)

Comentarii (0)