【发布时间】:2021-07-22 12:52:06
【问题描述】:
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- 有效域名(预期) -
192.15.67.34- 有效的 ipv4 地址(预期) -
192.45.dd.33预期:IP 无效
ACTUAL : 有效的域名,因为当前系统在通过域名约束时对其进行验证
-
192.67.77.xx预期:IP 无效
ACTUAL : 有效的域名,因为当前系统在通过域名约束时对其进行验证
请倒一些贵重的cmets。
【问题讨论】:
-
关于这个
192.67.77.xx我没有看到很多解决方法,因为它不像正则表达式失败。那是一个有效的域名。 -
鉴于您问题的当前形式,我的回答不会对您有太大帮助。您似乎正在尝试使用正则表达式来实现过于复杂的目标。您可能应该编写一个适合您特定需求的算法。您的域名正则表达式几乎不可读,并且似乎施加了非常具体的限制
标签: javascript regex ipv4