PHP使用正则表达式判断IP地址是否正确
拿 IP 中的其中一个数字来说,既然是数字,那么我们可以使用正则表达式 [0-9]{1,3} 来表示。由于[0-9]{1,3} 可以匹配的取值范围在 0~999 之间,超出了 IP 的有效范围,所以不能使用[0-9]{1,3}。 想要保证 IP 地址的数字部分不超过 255,可以将 0~255 这个范围划分为 4 个范围,分别是 0~99、100~199、200~249、250~255,这样就可以很方便的使用正则表达式表示了,如下所示:
([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])
表达式的具体含义可以对照《PHP正则表达式》一节中的内容,这里不再赘述。
有了上面的正则表达式,剩下的部分就简单多了,最简单的就是将上面的正则表达式重复 4 遍,同时在每一遍之间加上 /. 来表示 IP 地址中的 . ,如下所示:
((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/.)((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/.)((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/.)(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))
将正则表达式写成上面这样虽然逻辑上是正确的,但是太长了,并且不方便阅读,所以我们还可以将它精简一下。
((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))
至此正则表达式就是定义好了,下面就将它放到代码中来验证一下,示例代码如下所示:
?php function validateip($ip){ $preg= /^((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/ preg_match($preg,$ip,$matches); if(!empty($matches)) return 1; return 0; $arr_ip = [ -192.168.0.1 , 127.0.0.1 , 218.206.211.1 , 192.0.133.255 , 255.255.255.0 , -192.245.0.255 , 11.12.13.14 , 192.256.255.255 foreach ($arr_ip as $value) { if(validateip($value)){ echo $value. 是正确的 IP 地址 br }else{ echo $value. 不是正确的 IP 地址 br ?
运行结果如下:
-192.168.0.1 不是正确的 IP 地址
127.0.0.1 是正确的 IP 地址
218.206.211.1 是正确的 IP 地址
192.0.133.255 是正确的 IP 地址
255.255.255.0 是正确的 IP 地址
-192.245.0.255 不是正确的 IP 地址
11.12.13.14 是正确的 IP 地址
192.256.255.255 不是正确的 IP 地址
23966.html
htmlphp相关文章
- php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]
- php案例:自己写个数组转换成对象 对象转换成数组的的功能出来吧
- 【笔记php】如何使用PHP从JSON提取数据?
- 如何使用PHP连接MySQL数据库(php如何关联mysql)
- PHP实现将数组插入MySQL数据库(php数组插入mysql)
- Linux上运行PHP的简易方法(linux如何运行php)
- 版本实现Linux安装多个PHP版本的方法(linux安装多个php)
- PHP实现从MySQL数据库中读取信息(php读取mysql数据)
- 使用PHP执行Linux脚本:简单而快速!(php执行linux脚本)
- 开发使用PHP进行Redis项目开发(redis项目php)
- 使用PHP测试Redis的最佳实践(php测试redis)
- 文件MySQL更新实现快速PHP文件升级(mysql更新php)
- 利用PHP操作Redis变得更简单(php中redis的使用)
- 数据库快速学会:用PHP建立MySQL数据库(php建立mysql)
- 如何用PHP复制MySQL表?(php复制mysql表)
- MySQL和PHP编程:构建数据库连接桥梁(mysql与php连接)
- 脚本定时执行PHP脚本任务:Linux下的解决方案(linux定时php)
- 使用PHP编辑器轻松编写Linux平台代码(php编辑器linux)
- 使用PHP编写连接MSSQL类,轻松实现数据库操作(php连接mssql 类)
- 轻松完成PHP连接MSSQL环境的配置(php连接mssql配置)
- 用PHP从MSSQL读取数据表列表(php查询mssql列表)
- PHP与MSSQL结合,实现灵活高效的程序开发(php mssql 程序)
- 用PHP连接MSSQL数据库:轻松搞定!(mssql连接类php)
- 开启创新之旅Redis与PHP的结合(开启 redis php)
- 抢到手软秒杀PHP使用Redis进行流量管理(秒杀php用redis)
- php随机生成10位字符代码
- php入门学习知识点一PHP与MYSql连接与查询
- php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串