首页 > 试题广场 >

合法IP

[编程题]合法IP
  • 热度指数:242368 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。

数据范围:数据组数:
进阶:时间复杂度:,空间复杂度:



输入描述:

输入一个ip地址,保证不包含空格



输出描述:

返回判断的结果YES or NO

示例1

输入

255.255.255.1000

输出

NO
let arr=readline().split(".")
if(arr.length!==4){
    console.log('NO')
}else{
    let flag=true
    for(let i=0;i<4;i++){
        if(/[^0-9]/.test(arr[i])){
            console.log('NO')
            flag=false
            break
        }
        if(parseInt(arr[i])>255||arr[i]===''||(arr[i].length>1&&arr[i].startsWith('0'))){
            console.log('NO')
            flag=false
            break
         }
    }
    if(flag){
        console.log('YES')
    }
}

发表于 2022-08-27 15:54:17 回复(0)
let n=readline()
if(n.split('.').length===4){
    if(n.split('.').every(v=>(!!(v[0]*1)||(v[0]==='0'&&!v[1]))&&v<=255)){
        console.log('YES')
    }else{
       console.log('NO')
    }
}else{
   console.log('NO')
}
发表于 2022-07-14 23:57:44 回复(0)
function validateIp(ip) {
  let passCheck = true;
  let arr = ip.split(".");
  if (arr.length != 4) {
    passCheck = false;
  }
  for (let i = 0; i < arr.length; i++) {
    if (
      /^\D/g.test(arr[i]) ||
      (arr[i].startsWith("0") && !arr[i].endsWith("0")) ||
      arr[i] == "" ||
      arr[i] > (2**8) - 1 ||
      arr[i] < 0
    ) {
      passCheck = false;
    }
  }

  if (passCheck) {
    console.log("YES");
  } else {
    console.log("NO");
  }
}
validateIp(readline());

发表于 2022-07-03 21:24:15 回复(0)
while ((line = readline())) {
  console.log(Legal(line));
}
function Legal(ip) {
  let s = ip.split(".");
  let flag = "YES";
  if (s.length < 4||s.length>4) {
    flag = "NO";
  } else {
    for (i in s) {
      let a = s[i][0];
      if (
        s[i] > 255 ||
        s[i] < 0 ||
        s[i] == "" ||
        (s[i].length > 1 && /[^1-9]/.test(a))
      ) {
        flag = "NO";
        break;
      }
    }
  }

  return flag;
}

发表于 2022-06-09 21:30:32 回复(0)
发表于 2022-06-08 17:11:49 回复(0)
内置函数yyds
let ip = readline()
let ips = ip.split('.')
console.log(ips.length===4 && ips.every(el=> {
  return parseInt(el).toString() === el && parseInt(el)<=255 && parseInt(el)>=0
})? 'YES' : 'NO')

发表于 2022-05-21 15:40:24 回复(0)
JavaScript用四行代码搞定(正则表达式)
while (line = readline()) {
    const regOne = '(([0-9])|([1-9][0-9])|([1][0-9]{2})|([2](([0-4][0-9])|([5][0-5]))))'
    print(new RegExp(`^(${regOne}\\.){3}(${regOne})$`).test(line)? "YES":"NO");
}

每个IP都有如下情况
1位数 0-9
2位数 开头不能为零,即[1-9][0-9]
3位数 [2](([0-4][0-9])|([5][0-5]))
    第一位为1 [1][0-9]{2}  
    第一位为2, 第二位数为0-5, 其中第二位为5的时候 ,第三位为0-5
前三个IP必须带一个.   必须全部字符创都是这样的--加前后判断 (/^XXX$/)


发表于 2022-04-14 17:51:45 回复(0)
const arr = readline().split('.')
console.log(arr.length==4&&arr.every(v=>parseInt(v)<=255&&!/^[0|\+-]\d+$/.test(v))?'YES':'NO')
发表于 2022-03-17 15:53:21 回复(0)
while(str = readline()){
    let list = str.split(".");
    let tem = list.map(item=>parseInt(item))
    if((tem.join(".").length!==str.length)||list.length!==4){
        print("NO")
    }else{ 
        let flag = true;
        for(let i =0;i<list.length;i++){
            if(parseInt(list[i])>255||parseInt(list[i])<0){
                flag=false;
                break;
            }
        }
        print(flag?"YES":"NO")
    }
}

发表于 2022-02-28 16:11:52 回复(0)
let line = '';
while (line = readline()) {
    const arr = line.split('.');
    if (arr.length !== 4) console.log('NO');
    else {
        let ok = true;
        for (const item of arr) {
            const n = Number(item);
            if ((!/^\d+$/.test(item)) ||
               (item[0] === '0' && item.length > 1) ||
               n > 255
           ) {
                ok = false;
                break;
           }
        }
        console.log(ok ? 'YES' : 'NO');
    }
}

发表于 2022-02-26 10:21:02 回复(0)
while (line = readline()) {
    console.log(fn(line))
}

function fn(ip) {
    let arr = ip.split('.')
    let flag = 'YES'
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] > 255 || arr[i] < 0) {
            flag = 'NO'
            break;
        }
    }
    return flag
}

发表于 2021-11-21 21:00:44 回复(0)
let line
while(line = readline()) {
    let arr = line.split('.')
    let isTrue = true
    arr.forEach(p=>{
        if(Number(p) < 0 || Number(p) > 255) {
            isTrue = false
        }
    })
    console.log(isTrue ? 'YES' : 'NO')
}
发表于 2021-08-11 09:40:32 回复(0)
while(str=readline()){
    str=str.split(".");
    let res = "YES";
    for(let n of str){
        if(n>255 || n<0){
            res="NO"
            break;
        }
    }
    console.log(res)
}
发表于 2021-08-06 10:38:03 回复(0)