IP地址大小的校验方法

核心思想,就是讲地址段截分为四段,分段去比较大小

ipChecked.js

//比较两个IP地址的大小
const compareIp = (startIP, endIP) => {
    var temp1;
    var temp2;
    temp1 = startIP.split(".");
    temp2 = endIP.split(".");
    for (var i = 0; i < 4; i++) {
        var tmp1 = parseInt(temp1[i]);
        var tmp2 = parseInt(temp2[i]);
        if (tmp1 > tmp2) {
            return -1;
        }
        else if (tmp1 < tmp2) {
            return 1;
        }
    }
    return 0;
}
export default compareIp

然后在校验方法中引入js

//校验start ip和end ip的大小关系
    largeThanStartIp = (rule, value, callback) => {
        const { form } = this.props;
        let startNASIp = form.getFieldValue('startNASIp');
        if (ipRules.test(startNASIp) && ipRules.test(value)) {
            if (compareIp(startNASIp, value) < 0) {
                callback('Nas End Ip must be larger than Nas Start Ip !');
            } else {
                callback();
            }
        } else {
            callback()
        }
    }

这里使用了antd的form表单校验,callback方法必须,否则会一直转圈

IP地址大小的校验方法_第1张图片

效果如下图

你可能感兴趣的:(前端)