/ / Expression régulière qui correspond à un nombre avec un maximum de 2 décimales - Java, Android, regex, nombres

Expression régulière qui correspond nombre avec un maximum de 2 décimales - Java, Android, regex, nombres

J'écris un code simple en java / android.

Je veux créer une regex qui correspond à:

0
123
123,1
123,44

et tranche tout après le deuxième chiffre après la virgule.

Ma première idée est de faire quelque chose comme ça:

^d+(?(?=,{1}$)|,d{1,2})

^ - from begin
d+ match all digits
?=,{1}$ and if you get comma at the end
do nothin
else grab two more digits after comma

mais il ne correspond pas aux nombres sans virgule et je ne comprends pas ce qui ne va pas avec la regex.

Réponses:

3 pour la réponse № 1

Vous pouvez utiliser

^(d+(?:,d{1,2})?).*

et remplacer par $1. Voir le regex demo.

Détails:

  • ^ - début de chaîne -(d+(?:,d{1,2})?) - Capture du groupe 1 correspondant:
    • d+ - un ou plusieurs chiffres
    • (?:,d{1,2})? - une séquence optionnelle de:
      • , - une virgule
      • d{1,2} - 1 ou 2 chiffres
  • .* - le reste de la ligne qui est assortie et non capturée, et sera donc supprimée.

2 pour la réponse № 2

Ici:

,{1}

dit: exactement UN ","

Essayer:

,{0,1}

par exemple.


1 pour la réponse № 3

regex de base: [0-9]+[, ]*[0-9]+

Si vous souhaitez spécifier une longueur minimale et maximale, utilisez:

[0-9]{1,3}[, ]*[0-9]{0,2}