2017-10-12 2 views
1

Ich habe versucht worden, eine reg exp machen, dieRegex darf nicht mit 0 beginnen, aber mit 0 oder 0 beginnen,

0.27878 
0,8989 
2.98889 

akzeptieren, darf aber nicht mit nur 0 wie 088989383 starten.

Ich habe ^(?:\d+|\d{1,3}(?:,\d{3})+)(?:(\.|,)\d+)?$ verwendet.

Alle Lösungen .. Dank

+0

Ja erlaubt ist 2,3903093 und 29034, 0,33323, 0333 Nicht erlaubt: 2., 078.778 – Gang13

+0

Verwenden [ '^ (?! 0+ [1-9]) (?: \ D + | \ d {1,3} (?:, \ D {3}) +) (?: (\. |,) \ D +)? $ '] (Https://regex101.com/r/lMB2R1/2). Das '(?! 0+ [1-9])' negative Lookahead wird alle Strings, beginnend mit 1 oder mehr Nullen, gefolgt von einer anderen Ziffer als "0", nicht bestehen. –

+0

@ WiktorStribizew .. Danke für die Lösung. Es funktioniert jetzt – Gang13

Antwort

0

können Sie

^(?!0+[1-9])(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$ 

die regex demo nachschauen. Der negative Lookaheadwird alle Zeichenfolgen fehlschlagen, die mit 1 oder mehreren Nullen gefolgt von einer Ziffer anders als 0 beginnen.

Wenn Sie 00.825 wie Zahlen scheitern wollen, ersetzen Sie das Look-Ahead mit (?!0\d):

^(?!0\d)(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$ 

die pattern variation demo See.

Muster Details

  • ^ - Beginn der Zeichenfolge
  • (?!0+[1-9]) - eine negative Vorschau der Saiten versagt, die mit 1 oder mehr Nullen beginnt mit einer Ziffer andere gefolgt als 0 (oder (?!0\d) werden alle scheitern Fälle, wenn eine Nummer mit einer 0 gefolgt von einer Ziffer beginnt)
  • (?:\d+|\d{1,3}(?:,\d{3})+) - zwei Alternativen:
    • \d+-1 oder mehr Ziffern
    • | - oder
    • \d{1,3} - 1 bis 3 Ziffern
    • (?:,\d{3})+-1 oder mehr aufeinanderfolgenden Vorkommen von , und dann irgendwelche 3 Ziffern
  • (?:[.,]\d+)? - eine optionale Sequenz von . oder , und dann 1 oder mehr Ziffern
  • $ - Ende der Zeichenfolge.
+1

Arbeit wie ein Charme .. danke – Gang13

Verwandte Themen