t-comm
Version:
专业、稳定、纯粹的工具库
228 lines (226 loc) • 5.7 kB
JavaScript
/**
* 判断是否外部资源
* @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 };