首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证IPv4地址和域名的Regex。

验证IPv4地址和域名的Regex。
EN

Stack Overflow用户
提问于 2021-04-29 07:05:54
回答 1查看 93关注 0票数 0
代码语言:javascript
复制
if (isValidDomainName(addr)) {
     return true;
}
else if (isValidIPv4(addr)) {
     return true;
}

function isValidIPv4(addr){
    var regex = /^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$/;
    return regex.test(addr);
}

function isValidDomainName(name){
   var regex =/^((www\.([a-zA-Z0-9\-]{2,63}\.)+[a-zA-Z]{2,63})|(([a-zA-Z0-9\-]{2,63}\.)+[a-zA-Z]{2,63}))(\.[a-zA-Z]{2,63})?$/;
   return regex.test(name);
}

这是我写的代码。我正面临一些问题。让我举几个例子:

  • google.com -有效域name(expected)

  • 192.15.67.34 -有效的ipv4 address(expected)

  • 192.45.dd.33

预期:无效知识产权

实际:有效域名,因为当前系统在传递域名约束时会对其进行验证。

  • 192.67.77.xx

预期:无效知识产权

实际:有效域名,因为当前系统在传递域名约束时会对其进行验证。

请提出一些有价值的意见。

EN

回答 1

Stack Overflow用户

发布于 2021-04-29 07:23:04

据我所知,域名可以是由ASCII字母、数字和符号-组合而成的由.分隔的任何“块”序列。它最多可以有255个字符,并且必须以主域名结尾。

考虑到主域可以被定义为块,根据这个定义,192.45.dd.33192.67.77.xx 有效的域名。

为什么不验证输入作为IP地址,然后验证它作为域,只有当它不被承认为一个有效的IP?

代码语言:javascript
复制
function isValid(addr) {
  if (isValidIPv4(addr)) {
    return true;
  } else if (isValidDomainName(addr)) {
    return true;
  }
  return false;
}

function isValidIPv4(addr){
    var regex = /^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$/;
    return regex.test(addr);
}

function isValidDomainName(name){
   var regex =/^((www\.([a-zA-Z0-9\-]{2,63}\.)+[a-zA-Z]{2,63})|(([a-zA-Z0-9\-]{2,63}\.)+[a-zA-Z]{2,63}))(\.[a-zA-Z]{2,63})?$/;
   return regex.test(name);
}

for (addr of [
  '192.168.1.52','192.168.1.xx', '192.ww.1.0', '255.255.255.000',
  'my-domain.com', 'my$IPp.com', 'google.192'
  ]) {
  console.log(addr, isValidIPv4(addr), isValidDomainName(addr), isValid(addr));
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67312533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档