Reasy Team 数据验证和工具库函数
npm install @reasy-team/util
npm i @reasy-team/util -D
`
使用
`
// esm
import {getType} from '@reasy-team/util'
// cmd
const {getType} = require('@reasy-team/util')
`
API
$3
- getType)
- isObject)
- isEmptyObject)
- isDefined)
- isUndef)
- ipToInt)
- isSameNet)
- deepClone)
- debounce)
- throttle)
- encodeText)
- decodeText)
- guid)
$3
- getUtf8Length)
- required)
- byteLen)
- len)
- num)
- float)
- even)
- url)
- phoneNumber)
- domain)
- mac)
- specialMac)
- ip)
- ipNet)
- privateIP)
- netSegmentCheck)
- mask)
- allMask)
- email)
- hex)
- chkHalf)
- ascii)
- noSpaceStartEnd)
- lanMask)
- noSpace)
说明
$3
通过Object.prototype.toString获取值得类型
参数
- obj(any): 需要处理的值
返回
(string): 返回值对应的构造函数名,例如Object
示例
`js
getType('test') // String
getType([]) // Array
`
$3
是否是Object类型,即getType的值为Object
参数
- obj(any): 需要处理的值
返回
(boolean): 是返回true,否则返回false
示例
`js
isObject('test') // false
isObject([]) // false
isObject({}) // true
`
$3
是否为空对象
参数
- obj(any): 需要处理的值
返回
(boolean): 是返回true,否则返回false
示例
`js
isEmptyObject({}) // true
isEmptyObject([]) // false
`
$3
不为null或者undefined
参数
- val(any): 需要处理的值
返回
(boolean): 是返回true,否则返回false
示例
`js
isDefined('test') // true
isDefined() // false
isDefined(null) // false
`
$3
val是null或者undefined
参数
- val(any): 需要处理的值
返回
(boolean): 是返回true,否则返回false
示例
`js
isUndef('test') // false
isUndef() // true
isUndef(null) // true
`
$3
将Ip地址转成整数
参数
- ip(string): 需要处理的值
返回
(number): 返回值对应的构造函数名,例如Object
示例
`js
ipToInt('192.168.168.168') // 3232278696
ipToInt('192.168.0.1') // 3232235521
`
$3
检测lan口IP和wank口IP是否在同一网段
参数
- lanIp(string): Lan口IP
- wanIp(string): Wan口IP
- lanMask(string): Lan口mask
- wanMask(string): Wan口mask
返回
(boolean): 是返回true,否则返回false
示例
`js
isSameNet('192.168.3.1', '192.168.3.2', '255.255.255.0', '255.255.255.0') // true
isSameNet('192.168.3.1', '192.168.13.2', '255.255.255.0', '255.255.255.0') // false
`
$3
对象的深度克隆
参数
- obj(any): 需要克隆的值,如果参数为非对象或者function,则原样返回
返回
(any): 返回克隆后的对象
示例
`js
deepClone('test') === 'test' // true
let obj = {
a: 'text'
}
let cloneObj = deepClone(obj)
cloneObj === obj // fasle
console.log(cloneObj) // {a: 'text'}
`
$3
创建一个debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。 func只会被调用一次。
参数
- func(Function): 回调函数
- seconds(number): 延迟执行毫秒数
- \immediate=false: 是否立即执行
返回
(Function): 返回新的debounced(防抖动)函数。
示例
`js
debounce('test') // String
debounce([]) // Array
`
$3
创建一个throttle(节流)函数,该函数从上一次调用后,延迟wait毫秒后调用func方法,期间多次调用直接忽略。
参数
- func(Function): 回调函数
- seconds(number): 延迟执行毫秒数
返回
(Function): 返回新的throttle(节流)函数。
示例
`js
throttle('test') // String
throttle([]) // Array
`
$3
html文本特殊字符编码,处理如下字符:<,>,",',&,空格
参数
- str(string): 需要处理的字符串
返回
(string): 转码后的字符串
示例
`js
encodeText('< >"\'&') // < >"'&
`
$3
html文本特殊字符转码成源码。
参数
- str(string): 需要处理的字符串
返回
(string): 字符串对应的源码字符串
示例
`js
decodeText('< >"'&') // < >"'&
`
$3
获取唯一表示GUID
返回
(string): GUID
示例
`js
`
以下为数据校验相关函数,验证成功默认返回undefined,验证失败返回对应的错误信息
$3
获取utf-8编码字节长度
参数
- str(string): 需要处理的字符串
返回
(number): 字节长度
示例
`js
getUtf8Length('test') // 4
getUtf8Length('中文测试') // 12
`
$3
str为必填项
参数
- str(string): 需要处理的字符串
返回
(string): 为空返回对应的错误信息,否则返回undefined
示例
`js
required('') // This field is required
required('不为空') // undefined
`
$3
判断给定的字符串str长度(非字节)是否在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
len('test') // undefined
len('test', 8,12) // Range: 8 to 12 characters
`
$3
判断给定的字符串str字节长度是否在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
byteLen('test', 2,6) // undefined
byteLen('中文好几个字节', 6, 12) // Range: 6 to 12 bytes
`
$3
判定str为数字字符串,且值大小在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
num('test') // String
num([]) // Array
`
$3
判定str为数字字符串,且值大小在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
float('123') // undefined
float('123xx') // Must be float
`
$3
判定str为偶数数字字符串,且值大小在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
even('8') // undefined
even('9') // Must be even
`
$3
验证url的合法性,不包括协议部分即http://等
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
url('test') // undefined
url('') // Invalid URL
`
$3
验证电话号码的合法性
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
phoneNumber('test') // undefined
phoneNumber('') // Enter a valid phone number
`
$3
验证域名的合法性,且字节大小在设定的范围[min, max]内。
> 注意:如果max,否则返回对应的错误信息
示例
`js
domain('192.168.3.6') // undefined
domain('www.baidu.com') // undefined
domain('19213.134.134') // Enter a valid IP address or domain name.
`
$3
验证mac地址的合法性
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
mac('00:02:00:00:00:00') // undefined
mac('00:00:00:00:00:00') // The MAC address cannot be 00:00:00:00:00:00.
`
$3
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
specialMac('0023-00ad-0034') // undefined
`
$3
验证IP地址的合法性,最高位在1-223之间,且不能是127
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
ip('192.168.3.1') // undefined
ip('192.255.3.255') // Please enter a valid IP address.
`
$3
验证合法IP,且最后一位不能取0或255
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
ipNet('192.255.3.255') // undefined
`
$3
私有IP验证
> A类地址范围:10.0.0.0—10.255.255.255
> B类地址范围:172.16.0.0---172.31.255.555
> C类地址范围:192.168.0.0---192.168.255.255
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
privateIP('172.17.242.2') // undefined
privateIP('172.15.242.2') // Enter a valid private IP address
`
$3
输入IP地址与lanIP是否在同一个网段
参数
- ip(string): 待验证ip地址
- lanIp(string): lan口IP
- mask(string): Lan口mask
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
netSegmentCheck('192.168.3.1', '192.168.3.6', '255.255.255.0') // undefined
netSegmentCheck('192.168.13.1', '192.167.3.6', '255.255.0.0') // It must belong to the same network segment as that of the LAN IP address
`
$3
子网掩码合法性验证,不包括255.255.255.255
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
mask('255.255.255.254') // undefined
mask('252.255.253.254') // Enter a valid subnet mask
`
$3
全子网掩码验证,包括255.255.255.255
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
allMask('255.255.255.255') // undefined
allMask('252.255.253.254') // Enter a valid subnet mask
`
$3
邮箱合法性验证
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
email('75598233@qq.com') // undefined
`
$3
16进制字符合法性验证
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
hex('0123456789abcdefABCDEF') // undefined
hex('asf') // Only hexadecimal characters are allowed.
`
$3
是否包含全角字符验证
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
chkHalf('this is hale测试') // undefined
chkHalf('测试jkdf f') // Full-width characters are not allowed.
`
$3
ascii合法性验证
参数
- atr(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
ascii('fgdg ') // undefined
ascii('電飯鍋fg') // Please enter non-Chinese characters.
`
$3
字符串首尾是否包含空格验证
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
noSpaceStartEnd('this is no blank') // undefined
noSpaceStartEnd(' this is no blank ') // The first and last characters of the SSID cannot be spaces.
`
$3
子网掩码合法性验证,不包含255.255.255.255,255.255.255.254
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
lanMask('255.255.254.0') // undefined
lanMask('255.255.255.254') // Enter a valid subnet mask
`
$3
是否包含空格合法性验证
参数
- str(string): 需要处理的值
返回
(string): 范围内返回undefined,否则返回对应的错误信息
示例
`js
noSpace('test') // undefined
noSpace('tes t') // Spaces are disallowed
``