/**
* Created by (laoshi) on 2020/08/14.
*/
export function validPassword(str) {
var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,30}')
if (!pwdRegex.test(str)) {
return false
}
return true
}
export function checkValidate(value, type, callback) {
if (value === '' || value === undefined || value === null) return callback()
if (type === '' || type === undefined || type === null) return callback()
value = value.replace(/,/ig, ',')
const arr = value.split(',')
if (arr === null || arr.length === 0) return '输入校验字符'
for (var i = 0; i < arr.length; i++) {
var result = arr[i]
if (type === 'IP') {
var regIp = /^([1-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([0-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([0-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([1-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5])$/
if (result.indexOf('-') === -1 && result.indexOf('*') === -1) {
checkIpRang(result, callback)
if (!regIp.test(result)) return callback(new Error('请输入正确的ip:' + result))
} else if (result.indexOf('*') > 0) {
regIp = /(2(5[0-5]{1}|[0-4]d{1})|[0-1]?d{1,2})(.(2(5[0-5]{1}|[0-4]d{1})|[0-1]?d{1,2})){2}.+*+/
if (!regIp.test(result)) return callback(new Error('请输入正确的ip:' + result))
} else {
checkIpRang(result, callback)
regIp = /(2(5[0-5]{1}|[0-4]d{1})|[0-1]?d{1,2})(.(2(5[0-5]{1}|[0-4]d{1})|[0-1]?d{1,2})){2}/
if (!regIp.test(result)) return callback(new Error('请输入正确的ip:' + result))
}
} else if (type === 'PORT') {
var regPort = /^([0-9]|[1-9]d|[1-9]d{2}|[1-9]d{3}|[1-5]d{4}|6[0-4]d{3}|65[0-4]d{2}|655[0-2]d|6553[0-5])$/
if (result.indexOf('-') === -1) {
if (!regPort.test(result)) return callback(new Error('请输入正确的端口:' + result))
} else {
const arrPort = result.split('-')
for (var j = 0; j < arrPort.length; j++) {
if (!regPort.test(arrPort[j])) return callback(new Error('请输入正确的端口:' + arrPort))
}
}
}
}
}
function checkIpRang(result, callback) {
var reges = /-d+.+/
var value = result.match(reges)
if (value !== null) return callback(new Error('请输入正确的ip:' + result))
var index = result.lastIndexOf('.')
var lastIp = result.substring(index + 1, result.length)
var arr = lastIp.split('-')
if (parseInt(arr[0]) > parseInt(arr[1])) return callback(new Error('请输入正确的ip:' + result))
for (var i = 0; i < arr.length; i++) {
if (parseInt(arr[i]) > 255) return callback(new Error('请输入正确的ip:' + result))
if (parseInt(arr[i]) === 0 || arr[i] === '') return callback(new Error('请输入正确的ip:' + result))
}
}
export function validateCombinedIps(value, callback) {
if (value === '' || value === undefined || value === null) return callback()
const arr = value.split(/
/)
if (arr === null || arr.length === 0) return '输入Ip地址'
for (var i = 0; i < arr.length; i++) {
if (arr[i] === '' || arr[i === null]) continue
var result = arr[i]
checkIp(result, callback)
if (callback) break
}
}
function checkIp(ip, callback) {
var regIp = /^([1-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([0-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([0-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5]).([1-9]|[1-9]d{1}|1dd|2[0-4]d|25[0-5])$/
var regIpv6 = /((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))[%.+/]?/
if (ip.indexOf('::') === -1) { // 正常ip
if (ip.indexOf('/') === -1 && ip.indexOf('-') === -1) { // 正常单个ip
if (!regIp.test(ip)) return callback(new Error('IP地址::' + ip + '不是有效的数值!'))
} else if (ip.indexOf('/') > 0) {
const arr = ip.split(///)
for (var i = 0; i < arr.length; i++) {
var slantIp = arr[i]
if (slantIp.indexOf('.') === -1) {
if (Number(slantIp) < 0 || Number(slantIp > 255)) { return callback(new Error('IP地址::' + slantIp + '不是有效的数值!')) }
}
if (!regIp.test(slantIp)) return callback(new Error('IP地址:' + slantIp + '不是有效的数值!'))
}
} else if (ip.indexOf('-') > 0) {
const crossArr = ip.split(/-/)
if (crossArr.length === 2) {
var num = compareIP(crossArr[0], crossArr[1])
if (num === 1) {
for (var j = 0; j < crossArr.length; j++) {
var crossIp = crossArr[j]
if (!regIp.test(crossIp)) return callback(new Error('IP地址::' + crossIp + '不是有效的数值!'))
}
} else {
return callback(new Error('IP地址:' + crossArr[1] + '不是有效的数值!'))
}
}
}
} else {
if (ip.indexOf('-') > 0) {
var ipv6Arr = ip.split(/-/)
if (ipv6Arr.length === 2) {
var result = compareIpV6(ipv6Arr[1], ipv6Arr[0])
if (result > 0) {
for (var m = 0; m < ipv6Arr.length; m++) {
if (!regIpv6.test(ipv6Arr[m])) return callback(new Error('IP地址::' + ipv6Arr[m] + '不是有效的数值!'))
}
} else {
return callback(new Error('IP地址:' + ipv6Arr[1] + '不是有效的数值!'))
}
}
} else {
if (!regIpv6.test(ip)) return callback(new Error('IP地址::' + ip + '不是有效的数值!'))
}
}
}
function compareIpV6(ip1, ip2) {
ip1 = convert2CompleteIpV6(ip1)
ip2 = convert2CompleteIpV6(ip2)
var ip1s = ip1.split(':')
var ip2s = ip2.split(':')
for (var i = 0; i < ip1s.length; i++) {
if (ip1s[i] === '') {
if (ip2s[i] === '') {
continue
} else {
return -1
}
} else {
if (ip2s[i] === '') {
return 1
} else {
var value1 = parseInt(ip1s[i], 16)
var value2 = parseInt(ip2s[i], 16)
if (value1 > value2) {
return 1
} else if (value1 < value2) {
return -1
} else {
continue
}
}
}
}
}
function convert2CompleteIpV6(ip) {
var ipV6 = ip
var index = ip.indexOf('::')
if (index > 0) {
var size = 8 - (ip.split(':').length - 1)
var tmp = ''
for (var i = 0; i < size; i++) {
tmp += ':0'
}
tmp += ':'
ipV6 = ip.replace('::', tmp)
} else if (index === 0) {
ipV6 = ip.replace('::', '0:0:0:0:0:0:0:')
}
return ipV6
}
function compareIP(ipBegin, ipEnd) {
var temp1
var temp2
temp1 = ipBegin.split('.')
temp2 = ipEnd.split('.')
for (var i = 0; i <= 3; i++) {
if (Number(temp2[i]) < Number(temp1[i])) {
return -1
}
}
return 1
}
export function checkValidateIp(value, callback) {
if (value === '' || value === undefined || value === null) return callback()
const reg = /^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$/
if (!reg.test(value)) return callback(new Error('请输入正确的ip'))
}
export function checkValidateMac(value, callback) {
if (value === '' || value === undefined || value === null) return callback()
const reg = /^([A-Fa-fd]{2}:){5}[A-Fa-fd]{2}$/
if (!reg.test(value)) return callback(new Error('请输入正确的Mac'))
}
export function keyupCheck(event, maxNum) {
event.target.value = event.target.value.replace(/[^d]/g, '')
if (event.target.value > maxNum) event.target.value = maxNum
return event.target.value
}
vue调用:

