正则的效率是在比不上原生的,所以丢个链接(过滤器函数)走人。
二逼正则:
$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);
正确正则:
preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $ipAddress);
过滤器的选项,比如可以过滤私有IP地址等。
用法参考Validating an IP address with PHP's filter_var function