Ты сам пошел?Это действительно довольно просто.
|1[0-9][0-9]|
соответствует 100-199, так как вы сейчас хотите соответствовать 000-199 (как указано выше, это 200-155), вам просто нужно сделать набор для 1
быть 1
или 0
.
function valid_ip($ip) {
return preg_match("/^([1-9]|[1-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])".
"(\.([0-9]|[1-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip);
}
И это может быть подвергнуто рефакторингу (допуская ведущие нули) до:
function valid_ip($ip) {
return preg_match("/^([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])".
"(\.([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}$/", $ip);
}
Или обрезать эти ненужные нули:1013 *
function strip_ip($ip) {
return preg_replace( '/0+([^0])(\.|$)/' , '$1$2' , $ip );
}