PDA

View Full Version : Help Regex valori da 1 a 100 con decimali


legolas977
12-05-2022, 19:37
Ciao , devo completare questa Regex che ad ora fa il match con i valori da 0 a 100 con due decimali ( con punto o virgola).
Dovrei disabilitare lo 0 e renderla funzionante per i valori da 1 a 100. Potete aiutarmi? Grazie
Eccola:
^100$|^[0-9]{1,2}$|^[0-9]{1,2}[.,][0-9]{1,2}$|^100[.,][0]{1,2}$

legolas977
13-05-2022, 13:33
Ho risolto , magari serve a qualcuno:
^0[\.|,]([1-9][0-9]?|0[0-9]+?)$|^[1-9]{1,2}[\.|,][0-9]+$|^100[\.|,]?(0+)?$|^[1-9](([0-8](\.[0-9]*)?)|[0-9])?$|^[1-9](([0-8](\.[0-9]*)?)|[0-9])[\.|,][0-9]+$

x_Master_x
13-05-2022, 14:09
^([0-9]{1,2}[.,][0-9]{1,2})?$

https://regex101.com/r/ahO3YT/1

WarDuck
18-05-2022, 08:30
Disegnando l'automa a stati finiti per i numeri di massimo due cifre (da 1 a 99) ed *eventualmente* due cifre decimali, verrebbe una cosa di questo tipo (senza usare i quantificatori):

^[1-9][0-9]?([.,][0-9][0-9])?$

Il caso 100 è scomodo per l'automa perché deve prendere un path completamente diverso, forse la cosa più semplice a quel punto è mettere in OR la prima parte della Regex con la stringa "100":

^(100|[1-9][0-9]?)([.,][0-9][0-9])?$

Comunque, se non ho fatto errori, quella sopra è una possibile alternativa :D.

PS: ma il numero deve avere esattamente 0 o 2 decimali? Nel caso in cui debba avere 2 decimali esatti basta levare il "?" prima del simbolo dollaro.