龙空技术网

leetcode每日一题-468. 验证IP地址(JavaScript)

247gzs 90

前言:

此刻大家对“js获取当前用户ip地址”可能比较关注,咱们都需要剖析一些“js获取当前用户ip地址”的相关知识。那么小编也在网络上网罗了一些对于“js获取当前用户ip地址””的相关知识,希望大家能喜欢,兄弟们一起来了解一下吧!

题目链接: 力扣

题目描述: 判断给定的字符串,是否是有效的IPv4或者IPv6。其中,二者满足的条件懂得都懂[大笑]。

/** * @param {string} IP * @return {string} */var checkIPv4 = (IP) => {    // 判断开始和结尾两个位置是否为.    if (IP[0] === '.' || IP[IP.length - 1] === '.') {        return 'Neither';    }    var ipv4List = [], str = '';    for (var i = 0; i < IP.length; i ++) {        if ('0123456789.'.indexOf(IP[i]) === -1) {            return 'Neither';        }        if(IP[i] === '.') {            if (str === '') {                return 'Neither';            }            // 存储以.分割的每一个字符            ipv4List.push(str);            str = '';            continue;        }        str += IP[i];    }    if (str) {        ipv4List.push(str);    }    // 判断长度是否满足要求    if (ipv4List.length !== 4) {        return 'Neither';    }    // 每一个位置判断    for (var i = 0; i < ipv4List.length; i ++) {        str = ipv4List[i];        if (str[0] === '0' && str.length !== 1) {            return 'Neither';        }        var num = parseInt(str);        if (num < 0 || num > 255) {            return 'Neither';        }    }    return 'IPv4';}var checkIPv6 = (IP) => {    // 思路同checkIPv4    if (IP[0] === ':' || IP[IP.length - 1] === ':') {        return 'Neither';    }    var ipv6List = [], str = '';    for (var i = 0; i < IP.length; i ++) {        if(IP[i] === ':') {            if (str === '' || str.length > 4) {                return 'Neither';            }            ipv6List.push(str);            str = '';            continue;        }        str += IP[i];    }    if (str.length > 4) {        return 'Neither';    }    if (str) {        ipv6List.push(str);    }    if (ipv6List.length !== 8) {        return 'Neither';    }    return 'IPv6';}var validIPAddress = function(IP) {    const regex = /[^A-Fa-f0-9\.:]/g;    // 判断是否存在非IP地址要求的字符,若存在,则一定不为IP地址    if (IP.match(regex) !== null) {        return 'Neither';    }    if (IP.indexOf('.') !== -1) {        // IP4以.分割        return checkIPv4(IP);    } else if (IP.indexOf(':') !== -1) {        // IP6以:分割        return checkIPv6(IP);    }    return 'Neither';};

运行结果

标签: #js获取当前用户ip地址