468. Validate IP Address

2021-02-02  本文已影响0人  jluemmmm

验证输入的字符串是否是有效的IP地址:

时间复杂度 O(1),空间复杂度O(1)

正则判断

/**
 * @param {string} IP
 * @return {string}
 */
var validIPAddress = function(IP) {
    if(IP.indexOf('.') > -1) {
        return /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/g.test(IP) ? "IPv4" : "Neither"
    } else if(IP.indexOf(':')) {
        return /^(([0-9a-fA-F]{1,4})\:){7}([0-9a-fA-F]{1,4})$/g.test(IP) ? "IPv6" : "Neither"
    }
    return "Neither"
};

常规判断方法

首先判断长度,然后判断每一项的长度,以0开头,然后判断每一项的组成元素

/**
 * @param {string} IP
 * @return {string}
 */
var validIPAddress = function(IP) {
    if(IP.indexOf('.') > 0) {
        let ipvf = IP.split('.')
        if(ipvf.length !== 4) {
            return 'Neither'
        }
        let res = ipvf.every(item => {
            if(item[0] === '0' && item.length > 1 || item.length === 0) {
                return false
            } else {
                let t = item.split('').every(i => '0123456789'.indexOf(i) > -1) && item - '0' >= 0 && item - '0' <= 255
                return t
            }
        })
        return res ? 'IPv4' : 'Neither'
    } else if(IP.indexOf(':') > 0) {
        let ipvs = IP.split(':')
        if(ipvs.length !== 8) {
            return 'Neither'
        }
        let res = ipvs.every(item => {
            if(item.length > 4 || item.length === 0) {
                return false
            } else {
                let t = item.split('').every(i => '0123456789abcdefABCDEF'.indexOf(i) > -1)
                return t
            }
        })
        return res ? 'IPv6' : 'Neither'
    }
    return 'Neither'
};
上一篇 下一篇

猜你喜欢

热点阅读