美文网首页
判断一个字符串是否是合法ip

判断一个字符串是否是合法ip

作者: 周英杰Anita | 来源:发表于2020-05-25 11:19 被阅读0次

    此题目可以使用正则表达式匹配或者字符串匹配方法进行判断

    思路:

    1、正则表达式方法
    首先要表达出符合ipv4规范的ip正则表达式,ipv4的ip长度是4段,每段8位,共32位,用10进制表示,每段能表示的数字为0~255(2的8次方),每段用英文‘.’相隔,例如:192.168.0.1
    分析ip的组成特点:250-255,200-249,0-199
    这三种情况分开考虑:
    250-255:三位数,百位是2,十位是5,个位是0-5,正则表达式可以表示为:25[0-5]
    200-249:三位数,百位是2,十位是0-4,个位是0-9,正则表达式可以表示为:2[0-4]\d
    0-199:可以继续依次拆分如下:
             0-9:一位数,个位是0~9,用正则表达式可以写成:\d 
            10-99:两位数,十位是1-9,个位是0-9,用正则表示可以表示成:[1-9]\d
            100-199:三位数,百位是1,十位是0-9,个位是0-9,用正则表达式可以表示成:1\d{2}
    因此0-99可以和写成:[1-9]?\d,那么0-199就可以合写为:(1\d{2}|[1-9]?\d),那么0-255就可以表示为:(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
    最后,后面3段加上句点.可以使用{3}重复得到,得到IP地址的正则表达式:
    ^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$
    

    python2.7正则表达式解法:

    import re
    
    def judge_ip(ip):
        ip_str = '^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$'
        compile_ip = re.compile(ip_str)
        if compile_ip.match(ip):
            return True
        else:
            return False
    

    python2.7字符串匹配法解法:

    def judge_ip2(ip):
        if '.' not in ip:
            return False
        elif ip.count('.') != 3:
            return False
        else:
            Flag = True
            ip_list = ip.split('.')
            for ipstr in ip_list:
                try:
                    ipnum = int(ipstr)
                    if ipnum <= 255 and ipnum >= 0:
                        pass
                    else:
                        Flag = False
                except:
                    Flag = False
            return Flag
    

    相关文章

      网友评论

          本文标题:判断一个字符串是否是合法ip

          本文链接:https://www.haomeiwen.com/subject/omoeahtx.html