Eenvoudige reguliere uitdrukking voor een decimaal met een precisie van 2
Wat is de reguliere uitdrukking voor een decimaal met een precisie van 2?
Valide voorbeelden:
123.12
2
56754
92929292929292.12
0.21
3.1
ongeldige voorbeelden:
12.1232
2.23332
e666.76
De decimale punt kan optioneel zijn, en gehele getallen kunnen ook worden opgenomen.
258
3
Geldige regex-tokens verschillen per implementatie. Een algemene vorm is:
Meer compact:
Beide veronderstellen dat er minstens één cijfer voor en één cijfer na de decimaal staat.
Om te eisen dat de hele tekenreeks een getal van deze vorm is, wikkelt u de uitdrukking in begin- en eind-tags, zoals (in Perl's vorm):
Om getallen zonder voorloopcijfer voor het decimaalteken (
.12
) en gehele getallen met een punt achteraan (12.
) te evenaren terwijl invoer van een enkele punt (.
) wordt uitgesloten, probeer het volgende:Toegevoegd
Het breukgedeelte in
()?
gewikkeld om het optioneel te maken. Let op dat dit vormen zoals12.
uitsluit. Inclusief dat zou meer zijn als^0,2}$
.Toegevoegd
Gebruik
^1,6}(^1,2})?$
om de herhaling te stoppen en een beperking te geven tot het hele deel van de decimale waarde.En omdat reguliere expressies verschrikkelijk zijn om te lezen, laat staan te begrijpen, is hier het uitgebreide equivalent:
Je kunt
[0-9]
in de meeste reguliere expressie implementaties vervangen door[0-9]
(inclusief PCRE, de meest voorkomende). Ik heb het gelaten als[0-9]
omdat ik denk dat het makkelijker te lezen is.Hier is ook het eenvoudige Python script dat ik gebruikt heb om het te controleren:
Moet je geen rekening houden met de
e
ine666.76
?Met