Как мне сопоставить число от 0 до 255, используя регулярное выражение в PHP? - PullRequest
5 голосов
/ 06 мая 2010

/[0-9]+/ также будет соответствовать тем, которые находятся вне диапазона, например 999

Как написать регулярное выражение, точно совпадающее с числами между 0~255?

Ответы [ 5 ]

16 голосов
/ 06 мая 2010

Я бы сделал:

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

Регулярные выражения хороши, но их можно избежать в подобных случаях.

4 голосов
/ 06 мая 2010

Посмотрите здесь :

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 голосов
/ 06 мая 2010

Самое простое решение - взять число, преобразовать его в целое число, а затем проверить, что его значение <= 255. Но если вы <em>действительно, действительно захотите сделать регулярное выражение это, тогда это будет работать:

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

Редактировать Исправлена ​​причина, по которой он не работал во всех ситуациях. Если честно, вот почему вы должны просто разобрать строку в целое число и проверить, что целочисленное значение равно <= 255. </p>

2 голосов
/ 06 мая 2010

первая группа соответствует 0-99, вторая 100-199, третья 200-249, четвертая 250-255

/[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]/
1 голос
/ 06 мая 2010

На самом деле, вы должны просто соответствовать 0-999 и впоследствии нормализовать значения, но ...

/(25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([0-9][0-9])|([0-9]))/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...