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