1.校验类
class Validation {
// 校验范围限制
static range = {
Frequency: [48000, 999000],
RFLevel: [0, 108],
SymbolRate: [0, 999000],
Volume: [0, 100],
AudioDelay: [-2000, 2000],
VideoRate: [600, 20000],
GOPSize: [1, 61],
PID: [32, 8191],
UsefulPID: [32, 8190],
OtherPID: [0, 8191],
OrgNetID: [0, 65535],
TSID: [0, 65535],
ServiceID: [0, 65535],
IPPort: [0, 65535],
TTL: [1, 255],
IPRate: [0, 500],
VLAN: [1, 4094],
IGMPInterval: [30, 255],
FECL: [1, 20],
FECD: [4, 20],
Brightness: [0, 255],
Contrast: [0, 255],
Saturation: [0, 255],
Chrominance: [-180, 180],
ServiceName: [1, 31],
ProviderName: [1, 31],
OSDX: [0, 1920],
OSDY: [0, 1080],
OSDW: [2, 1920],//width
OSDH: [2, 1080],//height
shelterX: [0, 1920],
shelterY: [0, 1080],
shelterW: [2, 1920],//width
shelterH: [2, 1080],//height
syncFrequency: [1, 200],
}
//配置指定参数的范围
setRange = (name, min, max) => {
Validation[name][0] = min
Validation[name][1] = max
}
// 校验范围
static checkRange = (name, value) => {
let o = Validation.range[name]
return value >= o[0] && value <= o[1]
}
//获取字节长度
static getByteLen = (val) => {
let len = 0
for (let i = 0
if (val[i].match(/[^\x00-\xff]/ig) != null) { //全角
len += 2
} else {
len += 1
}
}
return len
}
//MAC地址
static isMAC = (value) => {
let reg_name = /^[A-F0-9]{2}(:[A-F0-9]{2}){5}$/
return reg_name.test(value)
}
//IP地址
static isIP = (strIP) => {
if (typeof strIP === "undefined") {
return false
}
let strip = strIP + ''
let reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/
let str = strip.replace(/^\s+|\s+$/g, '')
if (reSpaceCheck.test(str)) {
str.match(reSpaceCheck)
return (RegExp.$1 <= 255 && RegExp.$2 <= 255 && RegExp.$1 >= 0 && RegExp.$2 >= 0 && RegExp.$3 <= 255 && RegExp.$3 >= 0 && RegExp.$4 <= 255 && RegExp.$4 >= 0)
} else {
return false
}
}
/**
* [isEqualIPAddress 判断两个IP地址是否在同一个网段]
* @param {[String]} addr1 [地址一]
* @param {[String]} addr2 [地址二]
* @param {[String]} mask [子网掩码]
* @return {Boolean} [true or false]
*/
static isEqualIPAddress = (addr1, addr2, mask) => {
if (!addr1 || !addr2 || !mask) {
console.log("各参数不能为空")
return false
}
let res1 = [], res2 = []
let arr1 = addr1["split"](".")
let arr2 = addr2["split"](".")
let maskArr = mask["split"](".")
for (let i = 0, len = arr1.length
res1.push(parseInt(arr1[i]) & parseInt(maskArr[i]))
res2.push(parseInt(arr2[i]) & parseInt(maskArr[i]))
}
if (res1.join(".") === res2.join(".")) {
console.log("在同一个网段")
return true
} else {
console.log("不在同一个网段")
return false
}
}
//整数
static isInteger = (value) => {
if (typeof value === "undefined") {
return false
}
let strNum = value + ''
let reSpaceCheck = /^-*\d+$/
let str = strNum.replace(/^\s+|\s+$/g, '')
return reSpaceCheck.test(str)
}
//浮点型
static isFloatNumber = (strNumber) => {
if (typeof strNumber === "undefined") {
return false
}
let strNum = strNumber + ''
let reSpaceCheck = /^-*\d+(\.\d+)?$/
let str = strNum.replace(/^\s+|\s+$/g, '')
return reSpaceCheck.test(str)
}
// FTPIP或域名验证 (例:192.168.142.22:8000或者baidu.com:8000,可以不带端口)
static isFTPServer(strName) {
let regNumPointCheck = /(^[0-9.:]+$)/
if (regNumPointCheck.test(strName)) { //ip校验
let midIndex = strName.indexOf(':')
if (midIndex !== -1) {
let ip = strName.slice(0,midIndex)
let port = strName.slice(midIndex+1)
return Validation.isIP(ip) && Validation.isIPPort(port)
} else {
return Validation.isIP(strName)
}
} else {//域名校验
let regDomainCheck = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/
let midIndex = strName.indexOf(':')
if (midIndex !== -1) {
let domain = strName.slice(0,midIndex)
let port = strName.slice(midIndex+1)
return regDomainCheck.test(domain) && Validation.isIPPort(port)
} else {
return regDomainCheck.test(strName)
}
}
}
//FTP文件上传路径校验(如:192.168.142.22:8000/upload/ftpfile或者只有/upload/ftpfile)
static isFTPUploadPath(FTPUploadPath) {
let regPathCheck = /^(([A-Za-z]{1}:){0,1}\/.*)?$/ //允许特殊字符通过
if (FTPUploadPath === '') return false
//
if (FTPUploadPath.indexOf('/') === 0) {
return regPathCheck.test(FTPUploadPath)
} else {
//拆分出来校验
let midIndex = FTPUploadPath.indexOf('/')
let ip = FTPUploadPath.slice(0,midIndex)
let path = FTPUploadPath.slice(midIndex)
return Validation.isFTPServer(ip) && regPathCheck.test(path)
}
}
}
export default Validation