2017-04-14 9 views
0

ich einen regulären Ausdruck zu machen versuchen, dem folgendenRegex für Zahlen wie 1,1

1 
1.1 
9.9 
9 

aber nicht zulassen, dass 1,11 oder 9,97 oder 9,7

Kann jemand mir helfen, ermöglichen?

habe ich versucht, diese '/[0-9]+(\.[0-9]?)?/' aber es erlaubt noch 1,11

+0

teilen Ihre Forschung hilft allen. Sagen Sie uns, was Sie ausprobiert haben und warum es nicht Ihren Bedürfnissen entspricht. Dies zeigt, dass Sie sich die Zeit genommen haben, sich selbst zu helfen, es rettet uns davor, offensichtliche Antworten zu wiederholen, und vor allem hilft es Ihnen, eine spezifischere und relevantere Antwort zu bekommen! Siehe auch: [ask] –

+1

Die Regex-Sprache/das Tool, das Sie verwenden, würde auch helfen – silel

+0

Die Sprache ist PHP, aber das ist nicht wirklich wichtig, oder? – Brian

Antwort

0

sollte Dieses

arbeiten
'/^\d+(?:\.\d)?$/' 

Sie mit Ihrem Beispiel nahe waren, nur den Anfang und das Ende der Zeichenfolge zu erklären brauchte.

0
'/[0-9]{1,}.[0-9]/' 

sollte dies funktioniert auch

1

Ihre regex das Muster, das Sie beschreiben, passt aber es funktioniert nicht, das Muster ausschließen Sie nicht wollen, entsprechen. Der 1.1 Teil in 1.11 entspricht Ihrer Regex. Um 1.11 auszuschließen, können Sie Ihrer Regex hinzufügen, dass die Zeichenfolge nach der ersten Dezimalzahl enden muss: ^\d+(\.\d)?$.

\d entspricht einer Ziffer; Sie müssen . zu entkommen, weil sonst jedes Zeichen entspricht; und $ bedeutet "Ende der Zeichenfolge". Für eine schnelle Referenz können Sie überprüfen this.

Ganz logisch das Problem passiert auch am Anfang der Regex, Ihr sicherlich entspricht a1.1. Das Sonderzeichen ^ bedeutet 'Start der Zeichenfolge'.

Ein regex Ihre Bedürfnisse passende wäre dann:

^\d+(\.\d)?$