繁体   English   中英

尝试用 javascript 验证 IP 地址

[英]Try to validate IP Address with javascript

我是 javascript 的初学者。现在,我正在尝试制作一个表单以回发到服务器。 有一些包含 ip 地址的“输入”应该在提交前验证。 现在我做了一个 javascript function 效果很好。 但现在我正在尝试将这个 function 添加到 jquery 选择中。 只是混淆如何去做。

这是我的验证码 javascript。

function ValidateIPaddress(Ipfield)  
 {  
    IpAddr=Ipfield.value;
    var ipformat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;  

    if(!IpAddr.match(ipformat))  
        return true;  
    else
        return false;

 }

这就是我现在实现此验证的方式。

<input type= "text" name= "LocalIP" style= "margin-right:10px " value="192.168.1.193" class="ip" onfocusout="ValidateIPaddress(document.getElementById('LocalIp'))" id="LocalIp" >            Remote VIP Address :             
                <input type= "text" name= "RemoteVIPAddr" style= "margin-right:10px" value="234.5.6.7" class="ip"  onfocusout="ValidateIPaddress(document.getElementById('RemoteIp'))" id="RemoteIp" >
                Remote VIP Port :             
                <input type= "text" name= "RemoteVIPPort" style= "margin-right:10px" value="5004" class="ip"  onfocusout="ValidatePort(document.getElementById('RemoteVIPPort'))" id="RemoteVIPPort">

现在我想使用 jquery 选择来始终检查是否有一些无效输入。 这是类似的东西,但使用我自己的设计 function。

$("input.ip:visible").filter(function() { return this.ValidateIPaddress === true }).addClass("invalid");

有人知道吗?

您没有在过滤器函数中调用ValidateIPAddress ,您只是在测试 DOM 元素是否具有名为ValidateIPAddress的非空属性。 应该是:

$("input.ip:visible").filter(function() {
    return ValidateIPAddress(this);
}).addClass("invalid");

试试这个:

isIP(ip) {
  if (typeof(ip) !== 'string')
    return false;
  if (!ip.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)) {
    return false;
  }
  return ip.split('.').filter(octect => octect >= 0 && octect <= 255).length === 4;
}

原文: https : //stackoverflow.com/a/50612630/3261332

如果还需要接受 CIDR 格式的 IP/{0-32},请更新以下 2 行:

if (!ip.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/([0-9]|[12][0-9]|3[0-2]))?$/)) {
return ip.split('/')[0].split('.').filter(octet => octet >= 0 && octet <= 255).length === 4;

看看这是否有帮助。 这仅对 IP4 有效。 0.0.0.0 - 无效任何带有 CIDR 的 ip 都是无效的

function validateIP(ip) {
    is_valid = false;
    ip = ip.replace(/\s+/, "");

    if(ip.indexOf('/')!=-1){
        alert("IP not valid");
        return false
    }
    
    try {
        var ipb = ip.split('.');
        if (ipb.length == 4) {
            for (i = 0; i < ipb.length; i++) {
                b = parseInt(ipb[i]);    
                if (b >= 0 && b <= 255) {
                    is_valid = true;
                } else {
                    is_valid = false;
                    break;
                }
            }
        }
    } catch (exception) {
        alert("IP is not valid")
        return false;
    }
    if (!is_valid) {
        alert("IP is not valid")
        return false;
    }
    return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM