Vous pouvez utiliser
^(?!0+[1-9])(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
Voir la regex demo. La recherche négative (?!0+[1-9])
échouera toutes les chaînes commençant par 1 ou plusieurs zéros suivi d'un chiffre autre que 0
.
Si vous voulez ne pas 00.825
comme les numéros, remplacez le par (?!0\d)
préanalyse:
^(?!0\d)(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
Voir la pattern variation demo.
détails Motif
^
- début de la chaîne
(?!0+[1-9])
- une préanalyse négative à défaut les chaînes commençant par 1 ou plusieurs zéros suivi par un chiffre autre que 0
(ou (?!0\d)
échouera tout cas où un numéro commence par 0
suivi de n'importe quel chiffre)
(?:\d+|\d{1,3}(?:,\d{3})+)
- deux alternatives:
\d+
-1 ou plusieurs chiffres
|
- ou
\d{1,3}
- 1 à 3 chiffres
(?:,\d{3})+
-1 ou plusieurs occurrences consécutives de ,
puis tous les 3 chiffres
(?:[.,]\d+)?
- une séquence facultative de .
ou ,
puis 1 ou plusieurs chiffres
$
- fin de la chaîne.
Oui autorisé est 2,3903093 et 29034, 0,33323, 0333 Non autorisé: 2., 078778 – Gang13
Utilisez [ '^ (?! 0+ [1-9]) (: \ d + | \ d {1,3} (?:, \ D {3}) +) (?: (\. |,) \ D +)? $ '] (Https://regex101.com/r/lMB2R1/2). La recherche négative '(?! 0+ [1-9])' échouera toutes les chaînes commençant par 1 ou plusieurs zéros suivis d'un chiffre différent de '0'. –
@wiktorStribizew .. Merci pour la solution. Son fonctionnement maintenant – Gang13