JS工具类

/*** 是否满足手机号码的要求 */
function isPhoneNumber(obj) {
var phoneID = /^((13|14|15|16|17|18|19)){1}\d{9}$/;
if (!phoneID.test(obj)) {
return false;
} else {
return true;
}
}

/**是否满足电信手机号码的要求 */
function isDXPhoneNumber(obj) {
var phoneID = /^1(33|49|53|7[37]|8[019]|9[19])\d{8}|^170[012]\d{7}/;
if (!phoneID.test(obj)) {
return false;
} else {
return true;
}
}

/*** 是不是电话号码*/
function isPhone(obj) {
var strPhone = obj;
var phoneRegWithArea1 = /^(\d){7,12}$/;
if (strPhone.length != 0) {
if (phoneRegWithArea1.test(strPhone)) {
return true;
} else {
return false;
}
}
}

/*** 是不是邮箱/
function isEmail(obj) {
var patrn;
patrn = /^([a-zA-Z0-9]+[_|-|.]?)
[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|-|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/;
if (!patrn.exec(obj)) {
return false;
}
return true;
}

/*** 是不是为空*/
function isNull(str) {
str = $.trim(str);
if (!str || str == "" || str == "null" || str == "undefined")
return true;
return false;
}

/*** 判断身份证号码

  • @param num

  • @param isNew 是不是新标准 true为新标准

  • @returns {*}
    */
    function isIDCardNum(num, isNew) {
    if (isNew) {
    if (num.length != 18) {
    return '输入的身份证号长度不对,或者号码不符合规定!18位号码末位可以为数字或X。';
    }
    }
    num = num.toUpperCase();
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
    if (!(/(^\d{15})|(^\d{17}([0-9]|X))/.test(num))) {
    return '输入的身份证号长度不对,或者号码不符合规定!15位号码应全为数字,18位号码末位可以为数字或X。';
    }
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    //下面分别分析出生日期和校验位
    var len, re;
    len = num.length;
    if (len == 15) {
    re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
    var arrSplit = num.match(re);

     //检查生日日期是否正确
     var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
     var bGoodDay;
     bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
     if (!bGoodDay) {
         return '输入的身份证号里出生日期不对!';
     }
     else {
         //将15位身份证转成18位
         //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
         var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
         var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
         var nTemp = 0, i;
         num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
         for (i = 0; i < 17; i++) {
             nTemp += num.substr(i, 1) * arrInt[i];
         }
         num += arrCh[nTemp % 11];
         return true;
     }
    

    }
    if (len == 18) {
    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
    var arrSplit = num.match(re);

     //检查生日日期是否正确
     var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
     var bGoodDay;
     bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
     if (!bGoodDay) {
         return '输入的身份证号里出生日期不对!';
     }
     else {
         //检验18位身份证的校验码是否正确。
         //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
         var valnum;
         var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
         var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
         var nTemp = 0, i;
         for (i = 0; i < 17; i++) {
             nTemp += num.substr(i, 1) * arrInt[i];
         }
         valnum = arrCh[nTemp % 11];
         if (valnum != num.substr(17, 1)) {
             //$("#tip").html('18位身份证的校验码不正确!应该为:' + valnum);
             return '18位身份证的校验码不正确!';
         }
         return true;
     }
    

    }
    return '18位身份证的校验码不正确!';
    }

/**

  • 截取字符串长度

  • str 需要传入的字符串

  • number 需要的目标字符串位数

  • count 不包括点的字符串长度数

  • var str = "gfhjjuikoilolili";

  • str.part(str,5,5);//gfhjj..

  • */
    String.prototype.part = function (str, number, count) {
    if (str.length > number) {
    return str = str.substring(0, count) + "..";
    } else {
    return str;
    }
    }

/*** 获取字符串中所有的数字

  • str:字符串
    */
    String.prototype.getNum = function (str) {
    if (!isNull(str)) {
    return str.replace(/[^0-9]/ig, "");
    } else {
    return str;
    }
    }

/**

  • 替换所有
  • str:字符串
    */
    String.prototype.replaceAll = function (s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
    }

/**

  • 展示loading框
    */
    function showLoginWaitCurr(top, left) {
    var page = ('body'); if (isNull(page.find('#loginWait')) || page.find('#loginWait').length <= 0) { var loadingHtml = '\ <div name="a" style="position:fixed;width:100%;height:100%;top:0;display:none;z-index:10001;background-color:rgba(0,0,0,0);" id="loginWait">\ <div style="position:absolute;height:100%;width:100%;">\ <div id="loadding" style="position:absolute;width:140px;height:80px;border-radius:8px;-webkit-box-shadow: rgb(236, 236, 236) 0px 1px 1px;background:rgba(255, 255, 255,0.8);text-align:center;top:45%;line-height:0;">\ <img src="https://www.189.cn/client/wap/common/images/load.gif" style="position:relative;top:29%;width:25%;"></div>\ </div>\ </div>'; page.append(loadingHtml); } page.find("#loadding").css("left",("body").width() / 2 - 70); //页面初始化让loadding居中
    page.find('#loginWait').css("top", top);
    page.find('#loginWait').show();
    }

/**

  • 隐藏loading框
    */
    function hideLoginWaitCurr() {
    $('body').find("#loginWait").hide();
    }

/**

  • 新增cookie
  • @param name
  • @param value
  • @param days
    */
    function setCookie(name, value, days) {
    if (days >= 0) {
    days = (typeof(days) == "undefined") ? 0 : days;
    var exp = new Date();
    exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
    } else if (days == -1) {
    document.cookie = name + "=" + escape(value) + ";expires=-1;path=/";
    }
    }

/**

  • 获取cookie
  • @param name
  • @returns {string}
    /
    function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]
    )(;|$)");
    if (arr = document.cookie.match(reg))
    return unescape(arr[2]);
    else
    return "";
    }
    /**
  • 获取当前日期
  • @returns {string}
    */
    function getNowDate() {
    var date = new Date();
    var sign1 = "-";
    var sign2 = ":";
    var year = date.getFullYear() // 年
    var month = date.getMonth() + 1; // 月
    var day = date.getDate(); // 日
    var hour = date.getHours(); // 时
    var minutes = date.getMinutes(); // 分
    var seconds = date.getSeconds() //秒
    // var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
    // var week = weekArr[date.getDay()];
    // 给一位数数据前面加 “0”
    if (month >= 1 && month <= 9) {
    month = "0" + month;
    }
    if (day >= 0 && day <= 9) {
    day = "0" + day;
    }
    if (hour >= 0 && hour <= 9) {
    hour = "0" + hour;
    }
    if (minutes >= 0 && minutes <= 9) {
    minutes = "0" + minutes;
    }
    if (seconds >= 0 && seconds <= 9) {
    seconds = "0" + seconds;
    }
    var currentdate = year + sign1 + month + sign1 + day + " " + hour + sign2 + minutes + sign2 + seconds;
    return currentdate;
    }

/**

  • 格式化时间
  • @param fmt yyyy-MM-dd
  • @param date 时间
  • @returns {*}
    */
    function dateFormat(fmt, date) {
    var o = {
    "M+": date.getMonth() + 1, //月份
    "d+": date.getDate(), //日
    "h+": date.getHours(), //小时
    "m+": date.getMinutes(), //分
    "s+": date.getSeconds(), //秒
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    "S": date.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.1, (date.getFullYear() + "").substr(4 - RegExp.1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
    fmt = fmt.replace(RegExp.1, (RegExp.1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
    }

/**

  • 上传文件
  • <script type="text/javascript" src="${requestContext.contextPath}/resources/scripts/jquery.form.min.js"></script>
  • @param url 上传url
  • @param formId 表单id
  • @param successCallback 成功回调
  • @param errorCallback 错误回调
    */
    function upload(url, formId, successCallback, errorCallback) {
    var form = $('#' + formId);
    form.attr("action", url);
    form.attr("enctype", "multipart/form-data");
    form.attr("method", "post");
    form.ajaxSubmit({
    dataType: "json",
    clearForm: true, //提交成功重置表单
    success: function (data) {
    successCallback(data);
    },
    error: function (data) {
    errorCallback(data);
    }
    }).submit();
    }

/**

  • 文件下载
  • @param url 下载链接
  • @param data 请求数据对象{key:value}
  • @param requestType 请求类型 get或post 默认为post
    */
    var downloadFile = function (url, data, requestType) {
    if (isNull(requestType)) {
    requestType = "post";
    }
    //转为json格式
    data = JSON.stringify(data);
    var div =('<div id="down-file-div"/>');
    var form =('<form method="' + requestType + '" />');
    form.attr('action', url);form.append("<input type='hidden' name='data' value='" + data + "' />");
    div.append(form);
    (document.body).append(div);
    form[0].submit();div.remove();
    }

/**

  • 计算两个日期相差的天数
  • @param sDate1
  • @param sDate2
  • @returns {number|*}
  • sDate1和sDate2是2006-12-18格式
    */
    function datedifference(sDate1, sDate2) {
    var dateSpan,
    iDays;
    sDate1 = Date.parse(sDate1);
    sDate2 = Date.parse(sDate2);
    dateSpan = sDate2 - sDate1;
    dateSpan = Math.abs(dateSpan);
    iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
    return iDays
    }

/**

  • 计算两个日期相差的分钟
  • @param sDate1
  • @param sDate2
  • @returns {number|*}
  • sDate1和sDate2是2006-12-18格式
    */
    function datedifferenceMin(sDate1, sDate2) {
    var dateSpan,
    iDays;
    sDate1 = Date.parse(sDate1);
    sDate2 = Date.parse(sDate2);
    dateSpan = sDate2 - sDate1;
    dateSpan = Math.abs(dateSpan);
    iDays = Math.floor(dateSpan / (60 * 1000));
    return iDays
    }

/**

  • 是不是微信浏览器
  • @returns {boolean}
    */
    function isWxBrowser() {
    //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
    var ua = window.navigator.userAgent.toLowerCase();
    //通过正则表达式匹配ua中是否含有MicroMessenger字符串
    if (ua.match(/MicroMessenger/i)) {
    return true;
    } else {
    return false;
    }
    }

/**

  • 是不是支付宝浏览器
  • @returns {boolean}
    */
    function isAliBrowser() {
    //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
    var ua = window.navigator.userAgent.toLowerCase();
    console.log(ua);
    //通过正则表达式匹配ua中是否含有MicroMessenger字符串
    if (ua.match(/Alipay/i)) {
    return true;
    } else {
    return false;
    }
    }

/**

  • 获取n位随机数
  • @param n
  • @returns {*}
    */
    function getRandom(n) {
    if (n > 21) return null
    return parseInt((Math.random() + 1) * Math.pow(10, n - 1))
    }

/**

  • 根据身份证 获取信息
  • @param UUserCard
  • @param num
  • @returns {*}
  • @constructor
    */
    function idCard(UUserCard, num) {
    if (num == 1) {
    //获取出生日期
    birth = UUserCard.substring(6, 10) + "-" + UUserCard.substring(10, 12) + "-" + UUserCard.substring(12, 14);
    return birth;
    }
    if (num == 2) {
    //获取性别
    if (parseInt(UUserCard.substr(16, 1)) % 2 == 1) {
    //男
    return "男";
    } else {
    //女
    return "女";
    }
    }
    if (num == 3) {
    //获取年龄
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var day = myDate.getDate();
    var age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1;
    if (UUserCard.substring(10, 12) < month || UUserCard.substring(10, 12) == month && UUserCard.substring(12, 14) <= day) {
    age++;
    }
    return age;
    }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容