//在文件中写入正则
export function ipNoCode(str){
return /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/.test(str)
}
export function ip1(str){
return /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.([1-9]|1\d{1,2}|2[0-4]\d|25[0-4])-([1-9]|1\d{1,2}|2[0-4]\d|25[0-4])$/.test(str)
}
export function ip2(str){
return /^((\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.){3}((\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\/){1}(\d|[1-3]\d)$/.test(str)
}
export function ip3(str){
return /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|10)-([1-9]|10)\.(\*)$/.test(str)
}
<el-form :model="form" ref="form1" label-width="0px">
<el-form-item label="" prop="scanTargetId" :rules="[setRequired('请输入IP信息'),{ validator: ipVliad, trigger: 'change'}]">
<el-input :disabled="rwId ? true : false" v-model="form.scanTargetId" class="textarea" type="textarea" :rows="20" placeholder="请输入IP、IP段,可输入多行
IP段支持格式如下:
10.10.10.1-100
10.10.10.0/24
如果要输入连续的多个网段可以使用下面的格式:
192.168.1-10.*
代表192.168.1.0-192.168.10.0共10个网段" />
</el-form-item>
</el-form>
ipVliad(rule, value, callback) {
if(!value){
return
}
let code = value.trim().split(/[(\r\n)\r\n]+/)
let flag = 0;
let flag1 = 0;
let flag2 = 0;
let flag3 = 0;
let callbackStr = `请输入正确的IP、IP段,可输入多行,
IP段支持格式如下:
10.10.10.1-100、
10.10.10.0/24、
如果要输入连续的多个网段可以使用下面的格式:
192.168.1-10.* 代表192.168.1.0-192.168.10.0共10个网段`;
for(let i=0;i<code.length;i++){
if(code[i].indexOf('-')!=-1 && code[i].indexOf('*')==-1){
if(!ip1(code[i])){
flag=1;
}
}else if(code[i].indexOf('/')!=-1){
if(!ip2(code[i])){
flag1 = 1;
}
}else if(code[i].indexOf('*')!=-1){
if(!ip3(code[i])){
flag2=1;
}
}else{
if(!ipNoCode(code[i])){
flag3=1;
}
}
if(i == code.length - 1){
if(flag == 0 && flag1 == 0 && flag2 == 0 && flag3 == 0){
return callback();
}else{
return callback(new Error(callbackStr));
}
}
}
},