cuckoo-function
Version:
332 lines (306 loc) • 7.26 kB
JavaScript
/**
* 检查是否是手机号
* @param phone
* @returns {boolean}
*/
export function checkPhone (phone) {
const reg = /(1[3-9]\d{9}$)/;
return reg.test(phone);
}
/**
* 移动电话校验
* @param phone
* @returns {boolean}
*/
export function checkTelephone (phone) {
const reg = /^\d{3,4}\-\d{7,8}$/;
return reg.test(phone);
}
/**
* 银行卡校验
* @param bankCard
* @returns {boolean}
*/
export function checkBankCard (bankCard) {
const reg = /^[0-9]{16,19}$/;
return reg.test(bankCard);
}
/**
* email校验
* @param email
* @returns {boolean}
*/
export function checkEmail (email) {
const reg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/;
return reg.test(email);
}
/**
* 身份证校验
* {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
* @param id
* @returns {boolean}
*/
export function checkIdCard (id) {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
return reg.test(id);
}
/**
* 是否对象
* @param value 值
* */
export function isObj (value) {
return Object.prototype.toString.call(value).slice(8, -1) === 'Object'
}
/**
* 是否数组
* @param value值
* */
export function isArray (value) {
return Object.prototype.toString.call(value).slice(8, -1) === 'Array'
}
/**
* 判断空
* @param value
* @returns {boolean}
*/
export function isEmpty (value) {
if ((!value || typeof(value) === 'undefined') && (value !== 0 || value !== '0')) {
return true;
} else {
return false
}
}
/**
* 是否全部是数字
* @param str 字符串
* @returns {boolean}
*/
export function checkNumber (str) {
return str.match(/\D/) == null;
}
/**
* 是否为数字,包含小数
* @param str 字符串
* @returns {boolean}
*/
export function checkDecimal (str) {
if (str.match(/^-?\d+(\.\d+)?$/g) == null) {
return false;
}
else {
return true;
}
}
/**
* 是否为整数
* @param str 字符串
* @returns {boolean}
*/
export function checkInteger (str) {
if (str.match(/^[-+]?\d*$/) == null) {
return false;
}
else {
return true;
}
}
/**
* 是否是非汉字字符
* @param str 字符串
* @returns {boolean}
*/
export function checkNoCnString (str) {
if (/[^\x00-\xff]/g.test(str)) {
return false;
}
else {
return true;
}
}
/**
* 是否包含汉字
* @param str 字符串
* @returns {boolean}
*/
export function checkChinese (str) {
if (escape(str).indexOf("%u") != -1) {
return true;
}
else {
return false;
}
}
/**
* 是否是QQ号
* @param str 字符串
* @returns {boolean}
*/
export function checkQQ (str) {
if (str.match(/^\d{5,10}$/) == null) {
return false;
}
else {
return true;
}
}
/**
* 是否是IP地址
* @param str 字符串
* @returns {boolean}
*/
export function checkIP (str) {
let arg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
if (str.match(arg) == null) {
return false;
}
else {
return true;
}
}
/**
* 是否是URL
* @param str 字符串
* @returns {boolean}
*/
export function checkURL (str) {
if (str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i) == null) {
return false
}
else {
return true;
}
}
/**
* 是否包含特殊字符
* @param str 字符串
* @returns {boolean}
*/
export function checkQuote (str) {
let items = new Array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")");
items.push(":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||", "//");
items.push("admin", "administrators", "administrator", "管理员", "系统管理员");
items.push("select", "delete", "update", "insert", "create", "drop", "alter", "trancate");
str = str.toLowerCase();
for (let i = 0; i < items.length; i++) {
if (str.indexOf(items[i]) >= 0) {
return true;
}
}
return false;
}
/**
* 检查是否是日期,验证短日期(2019-11-11)
* @param str 字符串
* @returns {boolean}
*/
export function checkDate (str) {
let value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if (value == null) {
return false;
}
else {
let date = new Date(value[1], value[3] - 1, value[4]);
return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]);
}
}
/**
* 是否是时间,验证时间(10:57:10)
* @param str 字符串
* @returns {boolean}
*/
export function checkTime (str) {
let value = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/)
if (value == null) {
return false;
}
else {
if (value[1] > 24 || value[3] > 60 || value[4] > 60) {
return false
}
else {
return true;
}
}
}
/**
* 是否是时间(完整格式), (2019-11-11 10:57:10)
* @param str
* @returns {boolean}
*/
export function checkFullTime (str) {
let value = str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/);
if (value == null) {
return false;
}
else {
return true;
}
}
/**
* 判断性别
* @param idCard 身份证号
* @returns {number} 0[女] | 1[男] | -1[未知,原因是输入了不合法身份证]
*/
export function checkSexByIdCard (idCard) {
let trim = function (str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
};
idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。
if (idCard.length == 15) {
if (idCard.substring(14, 15) % 2 == 0) {
return 0;
}
else {
return 1;
}
}
else if (idCard.length == 18) {
if (idCard.substring(14, 17) % 2 == 0) {
return 0;
}
else {
return 1;
}
}
else {
return -1;
}
}
/**
* 是否是0-20个字母数字组合
* @param str 字符串
* @param start 最小个数,默认0,非必填
* @param end 最大个数,默认20,非必填
* @returns {boolean}
*/
export function checkEnStrRange (str, start, end) {
let startT = 0; let endT = 20;
if (typeof start !== 'undefined' && typeof end !== 'undefined' && Number.isInteger(start) && Number.isInteger(end)) {
startT = start;
endT = end;
}
const reg = new RegExp('^[a-z0-9A-Z]{' + startT + ',' + endT + '}$');
if (reg.test(str)) {
return true;
} else {
return false;
}
}
/*
// 港澳回乡证
// 规则: H/M + 10位或6位数字
// 样本: H1234567890
/^([A-Z]\d{6,11}(\(\w{1}\))?)$/
// 台胞证
// 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母
// 样本: 12345678 或 1234567890B
/^\d{8}|^\d{18}|^[a-zA-Z0-9]{10}$/
// 护照
// 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等
// 样本: 141234567, G12345678, P1234567
/^([a-zA-z]|[0-9]){5,17}$/
// 军官证
// 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"
// 样本: 军字第2001988号, 士字第P011816X号
/^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/
*/