UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

103 lines (100 loc) 3.21 kB
import devWarn from './utils/devWarn.js'; var regNumber = /\d/; var regLowerCaseLetter = /[a-z]/; var regUpperCaseLetter = /[A-Z]/; var regAllNumberAndLetter = /[\d|a-z]/gi; function hasHex(val) { return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1; } function hasSpecialCharacter(val, chars) { if (!chars || !val) { return false; } var specialChars = val.replace(regAllNumberAndLetter, ''); if (!specialChars) { return false; } var regChars = hasHex(chars) ? new RegExp("[".concat(chars, "]")) : null; if (regChars) { return regChars.test(specialChars); } var ret = false; specialChars.split('').some(function (charItem) { if (chars.indexOf(charItem) > -1) { ret = true; } return ret; }); return ret; } function hasUnallowableCharacter(val, chars) { if (!val) { return false; } var specialChars = val.replace(regAllNumberAndLetter, ''); if (!specialChars) { return false; } else if (!chars) { return true; } var regChars = hasHex(chars) ? new RegExp("[^".concat(chars, "]")) : null; if (regChars) { return regChars.test(specialChars); } var ret = false; specialChars.split('').some(function (charItem) { if (chars.indexOf(charItem) === -1) { ret = true; } return ret; }); return ret; } function validatePassword(value, options) { if (options === void 0) { options = {}; } var _a = options.level, level = _a === void 0 ? 2 : _a, _b = options.ignoreCase, ignoreCase = _b === void 0 ? false : _b, _c = options.special, special = _c === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _c; var valStr = value; if (typeof value !== 'string') { devWarn("[validatePassword] value must be a string."); valStr = ''; } var currentLevel = 0; var containesNumber = regNumber.test(valStr); var containesLowerCaseLetter = regLowerCaseLetter.test(valStr); var containesUpperCaseLetter = regUpperCaseLetter.test(valStr); var containesSpecialCharacter = hasSpecialCharacter(valStr, special); var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special); if (containesNumber) { currentLevel += 1; } if (ignoreCase) { if (containesLowerCaseLetter || containesUpperCaseLetter) { currentLevel += 1; } } else { if (containesLowerCaseLetter) { currentLevel += 1; } if (containesUpperCaseLetter) { currentLevel += 1; } } if (containesSpecialCharacter) { currentLevel += 1; } var validated = currentLevel >= level && !containesUnallowableCharacter; return { validated: validated, level: currentLevel, containes: { number: containesNumber, lowerCaseLetter: containesLowerCaseLetter, upperCaseLetter: containesUpperCaseLetter, specialCharacter: containesSpecialCharacter, unallowableCharacter: containesUnallowableCharacter } }; } export { validatePassword as default };