Form自定义校验规则
<div className='netAddressBtn'>
<div className='title' style={{ padding: 0 }}>
<Form.Item >
<div style={{ color: 'rgba(0, 0, 0, 0.85)' }}>入网地址:</div>
{getFieldDecorator('addnet', {
// rules: [
// { required: true, message: '*请输入入网地址' },
// {
// // pattern: /^http[s]?:\/\/.*/, // URL
// // pattern: /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/, // ipv4格式
// pattern: this.pattern(),
// message: '*请输入正确入网地址' }
// ],
rules: [
{ validator: (rules, value, callback) => {
try {
var reg = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/
var arr = value.split('-')
console.log('当前获取的地址', arr)
if (arr.length === 1) {
if (reg.test(arr[0])) {
return Promise.resolve()
} else {
return Promise.reject(new Error('*请输入正确入网地址'))
}
} else {
if (reg.test(arr[0]) && reg.test(arr[1])) {
const res = this.compareIP(arr[0], arr[1])
console.log('当前大小', res)
if (res === 1) {
return Promise.resolve()
} else {
return Promise.reject(new Error('*请输入正确入网地址'))
}
} else {
return Promise.reject(new Error('*请输入正确入网地址'))
}
}
} catch (e) {
if (e) {
console.log('error', e)
return Promise.reject(new Error('setting必须为JSON格式'))
}
}
}
}
],
validateTrigger: 'onBlur'
})(
<Input
placeholder='请输入'
className='basic'
style={{ backgroundColor: 'white' }}
allowClear
maxLength={500}
// onInput={e => this.text(e)}
/>
)}
</Form.Item>
</div>
<div className='btn-area'>
<div className='adbtn'>
<div onClick={() => { this.addNet() }}>增加</div>
</div>
{
this.state.netaddress.length >= 1 ? (
<>
<div className='split'></div>
<div className='adbtn'>
<div className='del' onClick={() => {
// let arr = this.state.netaddress
// let item = arr[arr.length - 1]
// setFieldsValue({ addnet: item.address })
// this.delNet(item)
this.lastdelNet()
}}
>删除</div>
</div>
</>
) : null
}
</div>
</div>
IPv4大小比较的方法
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
}
5858

被折叠的 条评论
为什么被折叠?



