2017-01-05 6 views
-2

Ich habe in den letzten paar Tagen gesucht, aber die einzigen Arten von Regex übereinstimmen, die ich sind wie diese finden:Regulärer Ausdruck eine Zahl mit zwei Ziffern höchstens und optional 2 Dezimalstellen höchstens

(\d{0,2})\.?\d{1,2}$ 

Das funktioniert gut mit Eingaben wie:

9 
99 
9.9 
9.99 
99.9 
99.99 
.9 
.99 

Alles OK mit denen, aber es passiert auch Eingänge zu akzeptieren, wie

999 
9999 

Ich möchte nicht, dass das passiert. Was kann ich tun, um dieses Problem zu lösen?

+0

Das ist, weil Sie * optional * akzeptieren die Periode Charakter – Michael

+0

Für 9 und 99 .... – Farkie

+1

sollten Sie nicht "regexp" suchen, aber bauen Sie es nach Ihren Anforderungen –

Antwort

2

Sie können diese Regex verwenden, um mit Wechsel:

^(?:\d{1,2}|\d{0,2}\.\d{1,2})$ 

RegEx Demo

RegEx Beschreibung:

^   # start 
(?:   # start non-capturing group 
    \d{1,2} # match 1 or 2 digits 
    |  # OR 
    \d{0,2} # match 0 to 2 digits 
    \.  # followed by DOT 
    \d{1,2} # match 1 or 2 digits 
)   # end non-capturing group 
$   # end 
+1

Danke, es funktioniert genau so, wie ich es brauche. – FerDensetsu

+1

Heh, ich wollte einen negativen Look behind, aber das ist auch gut. +1 – Farkie

+0

@Farkie: Es gibt keinen Lookbehind in Javascript – anubhava

0

Verwenden folgenden regex

(\d{0,2})\.\.?\d{0,2}$ 
+0

stimmt nicht 9 oder 99 – Farkie

+0

Ja, ich fand es bereits, sorry . Wird versuchen, die richtige Regex zu finden. –

+0

Nicht viel Sinn, es ist unten getan :) – Farkie

Verwandte Themen