在前端开发过程中,经常需要运用一些工具小函数来验证、格式化一些数据,获取一些参数等等,在这里整理一下。
数据合法性验证:
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 '';
}
}