2010-05-06 17 views

Antwort

4

Werfen Sie einen Blick here:

000..255:  ^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$ 
0 or 000..255: ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$ 
3

Die einfachste Lösung, um die Zahl greifen würde, in eine ganze Zahl konvertieren und testen Sie dann, dass es Wert ist, ist < = 255. Aber wenn Sie wirklich, wirklich wollen einen regulären Ausdruck, es zu tun, dann würde dies funktionieren:

^([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$ 

bearbeiten Fest Ursache es d Ich arbeite nicht in allen Situationen. Um ehrlich zu sein, deshalb sollten Sie die Zeichenfolge nur in eine ganze Zahl analysieren und testen, dass der ganzzahlige Wert < = 255 ist.

+1

Das entspricht ** nicht ** 150 bis 199 btw – YOU

+0

S.Mark: Meine Antwort aktualisiert, danke :) –

1

In Wirklichkeit sollten Sie nur 0-999 übereinstimmen und die Werte danach normalisieren, aber .. .

/(25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([0-9][0-9])|([0-9]))/ 
+0

Oder einfach nur eine beliebige Zahl fangen mit/(\ d +) / –

16

ich tun würde:

$n >= 0 && $n <= 255 

Regex sind gut, aber sie können in solchen Fällen vermieden werden.

2

erste Gruppe übereinstimmt 0-99, zweite 100-199, 200-249 dritte, vierte 250-255

/[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]/ 
Verwandte Themen