UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

228 lines (226 loc) 5.7 kB
/** * 判断是否外部资源 * @param {string} path * @returns {Boolean} * @example * ```ts * isExternal('http://baidu.com'); // true * isExternal('mailto:a@b.com'); // true * isExternal('tel:10086'); // true * isExternal('ttt'); // false * ``` */ function isExternal(path) { return /^(https?:|mailto:|tel:)/.test(path); } /** * 判断是否URL * @param {string} url * @returns {Boolean} * @example * ```ts * validURL('http://baidu.com'); // true * validURL('https://www.google.com'); // true * validURL('ftp://192.168.1.1'); // true * validURL('baidu.com'); // false * validURL('htp://test.com'); // false * validURL(''); // false * ``` */ function validURL(url) { var reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; return reg.test(url); } /** * 判断是否小写 * @param {string} str * @returns {Boolean} * @example * ```ts * validLowerCase('abc'); // true * validLowerCase('aBc'); // false * validLowerCase('abc123'); // false * validLowerCase(''); // false * ``` */ function validLowerCase(str) { var reg = /^[a-z]+$/; return reg.test(str); } /** * 判断是否大写 * @param {string} str * @returns {Boolean} * @example * ```ts * validUpperCase('ABC'); // true * validUpperCase('ABc'); // false * validUpperCase(''); // false * ``` */ function validUpperCase(str) { var reg = /^[A-Z]+$/; return reg.test(str); } /** * 判断是否字母字符串 * @param {string} str * @returns {Boolean} * @example * ```ts * validAlphabets('abcABC'); // true * validAlphabets('abc123'); // false * validAlphabets('abc def'); // false * ``` */ function validAlphabets(str) { var reg = /^[A-Za-z]+$/; return reg.test(str); } /** * 判断是否合法邮箱地址 * @param {string} email * @returns {Boolean} * @example * ```ts * validEmail('test@example.com'); // true * validEmail('user.name@domain.co'); // true * validEmail('test'); // false * validEmail('@example.com'); // false * validEmail('test@'); // false * ``` */ function validEmail(email) { // eslint-disable-next-line no-useless-escape var reg = /^(([^<>()[\]\\.,;:\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 reg.test(email); } /** * 判断是否字符串 * @param {string} str * @returns {Boolean} * @example * ```ts * isString('hello'); // true * isString(''); // true * isString(123); // false * isString(null); // false * isString(undefined); // false * isString([]); // false * ``` */ function isString(str) { if (typeof str === 'string' || str instanceof String) { return true; } return false; } /** * 判断是否数组 * @param {Array} arg * @returns {Boolean} * @example * ```ts * isArray([] as any); // true * isArray([1, 2, 3] as any); // true * isArray('hello'); // false * isArray(123 as any); // false * ``` */ function isArray(arg) { if (typeof Array.isArray === 'undefined') { return Object.prototype.toString.call(arg) === '[object Array]'; } return Array.isArray(arg); } /** * 判断是否合法的QQ号码 * @param {String} qq 待检测的qq号 * @example * ```ts * isQQNumber(777777); // true * isQQNumber('ddd'); // false * isQQNumber('1234'); // false // 少于 5 位 * isQQNumber('12345678901'); // false // 超过 10 位 * isQQNumber('01234567'); // false // 0 开头 * ``` */ function isQQNumber(qq) { var reQQ = /^[1-9]\d{4,9}$/; if (!reQQ.test(qq)) { return false; } return true; } /** * 判断是否合法的邮箱号码 * @param {String} email 待检测的邮箱号码 * @example * ```ts * isEmail('test@qq.com'); // true * isEmail('user.name@domain.com'); // true * isEmail('invalid'); // false * isEmail(''); // false * ``` */ function isEmail(email) { // @符号前后直接相邻不能为 . // eslint-disable-next-line no-useless-escape var reEmail = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; if (!reEmail.test(email)) { return false; } return true; } /** * 判断是否合法的手机号 * @param {String} phone 待检测的手机号 * @example * ```ts * isMobile('13800138000'); // true * isMobile('19912345678'); // true * isMobile('12345678901'); // false // 不是 1[3-9] 开头 * isMobile('1380013800'); // false // 位数不够 * isMobile('abc'); // false * ``` */ function isMobile(phone) { // 根据号码段的不同和前缀不同可适当修改 var reValue = /^[1]([3-9])[0-9]{9}$/; if (!reValue.test(phone)) { return false; } return true; } /** * 判断是否合法的电话号码 * @param {String} tel 待检测的电话号码 * @example * ```ts * isTel('0755-1234567'); // true * isTel('12345678'); // true * isTel('123'); // false * isTel('abc'); // false * ``` */ function isTel(tel) { var reValue = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/; if (!reValue.test(tel)) { return false; } return true; } /** * 判断当前操作系统是否为 Windows * @returns 如果是 Windows 系统返回 true,否则返回 false * @example * ```ts * if (isWindows()) { * console.log('当前运行在 Windows 系统上'); * } * ``` */ function isWindows() { return /^win/.test(process.platform); } export { isArray, isEmail, isExternal, isMobile, isQQNumber, isString, isTel, isWindows, validAlphabets, validEmail, validLowerCase, validURL, validUpperCase };