/** * this util module is about to provide support for value validation * @module angle-util/validator */ // 定义type type Character = string | number export default { /** * 是否为空白无效字符串(剔除无效的空格) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否为空白无效字符串(剔除无效的空格) * @example * validator.isBlankStr('a b') // false */ isBlankStr (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str || str.replace(/\s/g, '').length === 0) { return true } else { return false } }, /** * 是否为数字 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否为数字 * @example * validator.isNumber('a b') // false * validator.isNumber('123') // true */ isNumber (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } return /^\-?[0-9]+$/.test(str) }, /** * 是否是指定长度的数字 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是指定长度的数字 * @example * validator.isNumberAtLength('123', 3) // true */ isNumberAtLength (val: Character, len: number): boolean { if (typeof (val) === 'number') { val = val.toString() } if (this.isBlankStr(val) || !this.isNumber(val) || val.length !== len) { return false } else { return true } }, /** * 是否包含数字 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否包含数字 * @example * validator.hasNumber('123abc') // true */ hasNumber (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /[0-9]+/.test(str) }, /** * 是否为小数 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否为小数 * @example * validator.isFloatNum('123.2') // true */ isFloatNum (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } return /^(\-)?[0-9]+(\.[0-9]+)?$/.test(str) }, /** * 是否是小写英文字母 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是小写英文字母 * @example * validator.isLowercase('abc') // true */ isLowercase (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[a-z]+$/.test(str) }, /** * 是否存在小写英文字母 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否存在小写英文字母 * @example * validator.hasLowercase('abcDEF') // true */ hasLowercase (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /[a-z]+/.test(str) }, /** * 是否是大写英文字母 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是大写英文字母 * @example * validator.isUppercase('ABC') // true */ isUppercase (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[A-Z]+$/.test(str) }, /** * 是否存在大写英文字母 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否存在大写英文字母 * @example * validator.hasUppercase('abcDEF') // true */ hasUppercase (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /[A-Z]+/.test(str) }, /** * 是否是中文字符 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是中文字符 * @example * validator.isCnCharacter('ABC') // false */ isCnCharacter (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[\u4e00-\u9fa5]+$/.test(str) }, /** * 是否包含中文字符 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否包含中文字符 * @example * validator.hasCnCharacter('abcDEF我') // true */ hasCnCharacter (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /[\u4e00-\u9fa5]+/.test(str) }, /** * 是否是特殊字符 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是特殊字符 * @example * validator.isSpecialCharacter('ABC') // false */ isSpecialCharacter (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[-=.!@#$%^&*()+?><]+$/.test(str) }, /** * 是否包含特殊字符 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否包含特殊字符 * @example * validator.hasSpecialCharacter('abcDEF我') // false */ hasSpecialCharacter (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /[-=.!@#$%^&*()+?><]+/.test(str) }, /** * 是否是英文或者数字 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是英文或者数字 * @example * validator.isNumbersOrLetters('ABC12') // true */ isNumbersOrLetters (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[0-9a-zA-Z]+$/.test(str) }, /** * 是否长度处于 * @author youngbeen * @param { string } 待校验的字符串 * @param { integer } 最小长度 * @param { integer } 最大长度 * @return { boolean } 是否长度处于 * @example * validator.isLengthBetween('ABC12', 2, 5) // true */ isLengthBetween (str: Character, minLen: number, maxLen: number): boolean { if (typeof (str) === 'number') { str = str.toString() } if ((!str && str !== '') || (!minLen && minLen !== 0) || (!maxLen && maxLen !== 0) || str.length < minLen || str.length > maxLen) { return false } else { return true } }, // 特定验证 /** * 是否是名称(只能是中英文) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是名称(只能是中英文) * @example * validator.isName('张三') // true */ isName (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[a-zA-Z\u4e00-\u9fa5]+$/.test(str) }, /** * 是否是昵称名称(只能是中英文或者数字) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是昵称名称(只能是中英文或者数字) * @example * validator.isNickName('张三12') // true */ isNickName (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[\w\u4e00-\u9fa5]+$/.test(str) }, /** * 是否是公司名称(只能是中英文和括号以及部分特殊符号) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是公司名称(只能是中英文和括号以及部分特殊符号) * @example * validator.isCompany('YOUNGS') // true */ isCompany (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[\w\u4e00-\u9fa5()()\s\.]+$/.test(str) }, /** * 是否是金额(最多2位小数) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是金额(最多2位小数) * @example * validator.isAmount('12.23') // true */ isAmount (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^\-?[0-9]+(\.[0-9]{1,2})?$/.test(str) }, /** * 是否是重量(最多3位小数) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是重量(最多3位小数) * @example * validator.isWeight('12.233') // true */ isWeight (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[0-9]+(\.[0-9]{1,3})?$/.test(str) }, /** * 是否是手机号码 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是手机号码 * @example * validator.isMobileNo('12233334444') // true */ isMobileNo (numStr: Character): boolean { if (typeof (numStr) === 'number') { numStr = numStr.toString() } if (!numStr) { return false } return /^1[0-9]{10}$/.test(numStr) }, /** * 是否是固定电话(“区号-号码” 格式) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是固定电话(“区号-号码” 格式) * @example * validator.isTelephoneNo('027-88483843') // true */ isTelephoneNo (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^\d{3}-\d{8}|\d{4}-\d{7}$/.test(str) }, /** * 是否是传真(仅限数字和-) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是传真(仅限数字和-) * @example * validator.isFax('027-88483843') // true */ isFax (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[0-9\-]+$/.test(str) }, /** * 是否是微信号(2-20的长度,只能包含英文字母、数字、减号、下划线) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是微信号 * @example * validator.isWechatNo('Youngbeen') // true */ isWechatNo (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (str && str.length >= 2 && str.length <= 20) { return /^[\w\-]+$/.test(str) } else { return false } }, /** * 是否是网址 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是网址 * @example * validator.isUrl('https://www.abc.com') // true */ isUrl (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^(https?:\/\/)?(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-]#?(\?)?)*)*$/i.test(str) }, /** * 是否是银行卡号(限定16-19位) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是银行卡号 * @example * validator.isCardNo('6273772873772837') // true */ isCardNo (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[0-9]{16,19}$/.test(str) }, /** * 是否是身份证号 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是身份证号 * @example * validator.isIdCardNo('420222190001019992') // true */ isIdCardNo (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^\d{17}[\d|x|X]$/.test(str) }, /** * 是否是email地址 * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是email地址 * @example * validator.isEmailAddress('abc@some.com') // true */ isEmailAddress (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ return re.test(str) }, /** * 是否是登录账户(只能包含字母/数字或下划线,且以字母开头) * @author youngbeen * @param { string } 待校验的字符串 * @return { boolean } 是否是登录账户 * @example * validator.isLoginName('abcawef') // true */ isLoginName (str: Character): boolean { if (typeof (str) === 'number') { str = str.toString() } if (!str) { return false } return /^[a-zA-Z]+\w*$/.test(str) } }