在前端开发过程中,经常需要运用一些工具小函数来验证、格式化一些数据,获取一些参数等等,在这里整理一下。
数据合法性验证:
var legal={ mobile:function(data){//手机号码 var reg=/^1[3,5,8]\d{9}$/; return reg.test(data) }, phone:function(data){//固定电话 //010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567 var reg=/^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^0\d2-?\d{8}$)|(^0\d3-?\d{7}$)$/; return reg.test(data) }, email:function(data){//电子邮箱 var reg=/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+(\.[a-zA-Z]{2,3})+$/; return reg.test(data) }, ident:function(data){//身份证 var reg=/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/; return reg.test(data) }, post:function(data){//邮政编码 var reg=/^\d{6}$/; return reg.test(data) }, ip:function(data){//ip地址 var reg=/^((([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}(([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))$/; return reg.test(data) }, chinese:function(data){//中文 var reg= /^[\u4e00-\u9fa5]+$/; return reg.test(data) }, date:function(data){//日期 2012-05-14、2012/05/6、2012.5.14、20120528 var reg= /^[1-9]\d{3}([-|\/|\.])?((0\d)|([1-9])|(1[0-2]))\1(([0|1|2]\d)|([1-9])|3[0-1])$/; return reg.test(data) } }
日期时间类:
var timeTool={ formatTime:function(ms, fmt){ var time = new Date(ms*1000); var o = { "M+": time.getMonth() + 1, //月份 "d+": time.getDate(), //日 "H+": time.getHours(), //小时 "m+": time.getMinutes(), //分 "s+": time.getSeconds(), //秒 "q+": Math.floor((time.getMonth() + 3) / 3), //季度 "S": time.getMilliseconds() //毫秒 }; if (!fmt) fmt = 'yyyy-MM-dd HH:mm:ss'; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (time.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; }, //var time=timeFormat(new Date(),'yyyy/MM/dd HH:mm:ss') //弹出 2017/02/04 17:48:23 (具体时间以当前时间为准) //将代码粘贴至js在线调试 http://jsbin.com/ getThisMonth:function(){//获取本月始末年月日 var oneDay = 24 * 60 * 60 * 1000; var now = new Date(), nowyear = now.getFullYear(), nowmonth = now.getMonth() + 1; var startTime=nowyear+"-"+nowmonth+"-01"; var nextmonth=nowmonth+1; if(nextmonth>12){ nextmonth="01"; var nextyear=nowyear+1; var endTimems= new Date(nextyear+"/01/01").getTime()-oneDay }else{ var endTimems=new Date(nowyear+"/"+nextmonth+"/01").getTime()-oneDay; } var endTime=nowyear+"-"+nowmonth+"-"+new Date(endTimems).getDate() return {startTime,endTime} }, getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = days.getDate(); //获取当前日期中月的天数 var year2 = year; var month2 = parseInt(month) - 1; if (month2 == 0) {//如果是1月份,则取上一年的12月份 year2 = parseInt(year2) - 1; month2 = 12; } var day2 = day; var days2 = new Date(year2, month2, 0); days2 = days2.getDate(); if (day2 > days2) {//如果原来日期大于上一月的日期,则取当月的最大日期。比如3月的30日,在2月中没有30 day2 = days2; } if (month2 < 10) { month2 = '0' + month2;//月份填补成2位。 } var t2 = year2 + '-' + month2 + '-' + day2; return t2; } }
价格格式转换:
var priceFormat={ fenToYuan:function(fen){ fen = fen ? fen : 0; return (parseFloat(fen) / 100).toFixed(2); }, yuanToFen:function(yuan){ yuan = yuan ? yuan : 0; return Math.round(yuan * 100); }, priceSplit:function(price){//千分位 price=price.toFixed(2).toString(); var priceInt=price.split('.')[0];//获取整数部分 var priceDecimal=price.split('.')[1].toString();//获取小数部分 var count=Math.floor((priceInt.length-1)/3);//千分位个数 var priceArr=priceInt.split(""); var newArr=[]; var newPrice=""; for(var i=0;i<count;i++){ for(j=0;j<3;j++){ newArr.push(priceArr.pop()); } newArr.push(','); } newArr=priceArr.concat(newArr.reverse()); newPrice=newArr.join("")+(!priceDecimal ? "" : "."+priceDecimal); return newPrice } }
字符串处理:
var stringTool={ getLength:function(str) { //获得字符串实际长度,中文2,英文1 var realLength = 0, len = str ? str.length : 0, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) realLength += 1; else realLength += 2; } return realLength; } }
浏览器信息:
var browser={ getParams:function(para){ var href=window.location.href; var param = href ? href.split('?')[1] : ''; if (param && param.split('&').length > 0) { var opt = {}; param.split('&').map((item)=> { var arr = item.split('='); opt[arr[0]] = arr[1]; }); return opt[para]; } return ''; } }
