2017-10-12 2 views
1

J'ai essayé faire un reg exp qui acceptentRegex ne doit pas commencer par 0, mais peut commencer par 0. ou 0,

0.27878 
0,8989 
2.98889 

Mais ne doit pas commencer avec seulement 0 tels que 088989383.

J'ai utilisé ^(?:\d+|\d{1,3}(?:,\d{3})+)(?:(\.|,)\d+)?$.

Toutes les solutions .. merci

+0

Oui autorisé est 2,3903093 et ​​ 29034, 0,33323, 0333 Non autorisé: 2., 078778 – Gang13

+0

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'. –

+0

@wiktorStribizew .. Merci pour la solution. Son fonctionnement maintenant – Gang13

Répondre

0

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.
+1

Travailler comme un charme .. merci – Gang13