获取ip的正则表达式

获取ip的正则表达式

4-7具体的答案是什么呢?

还有我匹配ip的正则是这个(1\d{1,2}|2[0-5]{2})\.(\d{1,2}|1\d{1,2}|2[0-5]{2})\.(\d{1,2}|1\d{1,2}|2[0-5]{2})\.((\d{1,2})|(1\d{1,2})|(2[0-5]{2}))但是为什么情况是这样,下图http://img1.sycdn.imooc.com//climg/5a7ae7250001990702320134.jpg,请老师帮忙看看哪里出问题了

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,因为(\d{1,2})只会匹配到两位数字,而|是或的关系,当前边匹配成功时,则不会再进行后边的匹配,因此只匹配到了两位数字,

你可以使用(1\d{1,2}|2[0-5]{2})\.(\d{1,2}|1\d{1,2}|2[0-5]{2})\.(\d{1,2}|1\d{1,2}|2[0-5]{2})\.(\d{1,2})匹配,会发现与你此时的结果是相同的,是因为|之后的程序并没有执行。

这种问题没有标准答案的,在百度上搜也是各式各样呢

你可以试试这个(0|1\d{1,2}|2[0-5]{2})\.(0|1\d{1,2}|2[0-5]{1,2})\.(0|1\d{1,2}|2[0-5]{1,2})\.(0|1\d{1,2}|2[0-5]{1,2})根据你的改的


  • sugm 提问者 #1
    好的谢谢,原来是或的原因,我知道怎么调整了,但是请问一下,这种第四个IP的情况可以设置贪婪模式来尽可能多的匹配吗,就是三种都匹配下来选择其中最多的一种进行匹配
    2018-02-09 14:45:00
  • imooc_澈 回复 提问者 sugm #2
    您好,不可以,这种情况跟贪婪匹配没有关系,ip有多种组合情况,被占用的style给出的建议(0|(1\d{1,2})|(2[0-5]{2}))就可以对最后ip可能值进行覆盖。
    2018-02-09 17:26:35
imooc的铁粉 2018-02-08 09:47:04

你好,在正则表达式在线匹配的页面上面是全局匹配的,

建议参考 

<?php
$pattern='/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/';
$subject="
'10.0.0.0',
'255.255.255.255',
'128.12.187.12',
'187.234.213.231',
'289.243.2413.567'
";
$result=preg_match_all($pattern,$subject,$match);
//print_r($result);
print_r($match);
?>

如果解决您的问题请采纳,祝学习愉快!


  • 提问者 sugm #1
    我其实是想知道为什么第三项和第四项的IP的最后一段只能截取到两位数字
    2018-02-08 14:38:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师