扩展了内置对象Array Date String的方法
/******************Array 对象扩展***********************/ /** 去除数组中的重复项 **/ Array.prototype.removeRepeat = function () { var reset = [], done = {}; for (var i = 0; i < this.length; i++) { var temp = this[i]; //这里的json对象一定要以数组的方式访问,否则会认为找不到这个对象 if (!done[temp]) { done[temp] = true; reset.push(temp); } } return reset; }; //删除指定的数组 Array.prototype.del = function(n) { if (n<0) return this; return this.slice(0,n).concat(this.slice(n+1,this.length)); }; // 数组第一次出现指定元素值的位置 Array.prototype.indexOf = function(o) { for (var i=0; i9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100)); str=str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0' + (this.getMonth()+1)); str=str.replace(/M/g,this.getMonth()); str=str.replace(/w|W/g,Week[this.getDay()]); str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate()); str=str.replace(/d|D/g,this.getDate()); str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours()); str=str.replace(/h|H/g,this.getHours()); str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes()); str=str.replace(/m/g,this.getMinutes()); str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds()); str=str.replace(/s|S/g,this.getSeconds()); return str; }; /** * 比较日期差(原型扩展或重载) * @param {strInterval} 日期类型:'y、m、d、h、n、s、w' * @param {dtEnd} 格式为日期型或者 有效日期格式字符串 * @type int * @returns 比较结果 */ Date.prototype.dateDiff = function(strInterval, dtEnd) { var dtStart = this; if (typeof dtEnd == 'string' ) { //如果是字符串转换为日期型 dtEnd = StringToDate(dtEnd); } switch (strInterval) { case 's' :return parseInt((dtEnd - dtStart) / 1000); case 'n' :return parseInt((dtEnd - dtStart) / 60000); case 'h' :return parseInt((dtEnd - dtStart) / 3600000); case 'd' :return parseInt((dtEnd - dtStart) / 86400000); case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7)); case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1); case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear(); } }; /** * 日期计算(原型扩展或重载) * @param {strInterval} 日期类型:'y、m、d、h、n、s、w' * @param {Number} 数量 * @type Date * @returns 计算后的日期 */ Date.prototype.dateAdd = function(strInterval, Number) { var dtTmp = this; switch (strInterval) { case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number)); case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number)); case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number)); case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number)); case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number)); case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); } }; /** * 取得日期数据信息(原型扩展或重载) * @param {interval} 日期类型:'y、m、d、h、n、s、w' * @type int * @returns 指定的日期部分 */ Date.prototype.datePart = function(interval){ var myDate = this; var partStr=''; var Week = ['日','一','二','三','四','五','六']; switch (interval) { case 'y' :partStr = myDate.getFullYear();break; case 'm' :partStr = myDate.getMonth()+1;break; case 'd' :partStr = myDate.getDate();break; case 'w' :partStr = Week[myDate.getDay()];break; case 'ww' :partStr = myDate.WeekNumOfYear();break; case 'h' :partStr = myDate.getHours();break; case 'n' :partStr = myDate.getMinutes();break; case 's' :partStr = myDate.getSeconds();break; } return partStr; }; /** * 把日期分割成数组(原型扩展或重载) * @type array * @returns 日期数组 */ Date.prototype.toArray = function() { var myDate = this; var myArray = Array(); myArray[0] = myDate.getFullYear(); myArray[1] = myDate.getMonth()+1; myArray[2] = myDate.getDate(); myArray[3] = myDate.getHours(); myArray[4] = myDate.getMinutes(); myArray[5] = myDate.getSeconds(); return myArray; }; /** * 判断闰年(原型扩展或重载) * @type boolean * @returns 是否为闰年 true/false */ Date.prototype.isLeapYear = function() { return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0))); }; /******************String 表单检查***********************/ //检查是否是URL地址 String.prototype.isURL=function(){ var re=/http[s]?:\/\/([\w-]+.)+[\w-]+(\/[\w-./?%&=]*)?/; var result = re.test(this); return result; }; //检查表单是否是email字符串 String.prototype.isEmail=function(){ var re=/\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*/; var result = re.test(this); return result; }; //检查号码,正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX String.prototype.isPhoneNumber=function(){ var re=/^((\d{3,4})|\d{3,4}-)?\d{7,8}$/; var result = re.test(this); return result; }; /******************String 数字检查***********************/ /** * 获取字符串长度(原型扩展或重载) * @type int * @returns 字符串长度 */ String.prototype.len = function() { var arr=this.match(/[^\x00-\xff]/ig); return this.length+(arr==null?0:arr.length); }; //检查是否是浮点数,包括0,包括正浮点数 负浮点数 String.prototype.isFloat=function(){ var re=/^-?([1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0)$/; var result = re.test(this); return result; }; //检查是否是非负浮点数,包括0 String.prototype.isFloatNegativ=function(isContainZero){ if(isContainZero){ var re=/(^-([1-9]\d*.\d+|0.\d*[1-9]\d*)$)|(0)/; var result = re.test(this); return result; }else{ var re=/^-([1-9]\d*.\d+|0.\d*[1-9]\d*)$/; var result = re.test(this); return result; } }; //检查是否是正浮点数,包括0 String.prototype.isFloatPositive=function(isContainZero){ if(isContainZero){ var re=/^[1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0$/; var result = re.test(this); return result; }else{ var re=/^[1-9]\d*.\d+|0.\d*[1-9]\d*$/; var result = re.test(this); return result; } }; //检查是否是整数,包括0,正整数,负整数 String.prototype.isInt = function(){ var re=/^-?\d+$/; var result = re.test(this); return result; }; /** * 检查是否是正整数 * isContainZero 是否包含0 */ String.prototype.isIntPositive = function(isContainZero){ if(isContainZero){ var re=/(^[0-9]*[1-9][0-9]*$)|(0)/; var result = re.test(this); return result; }else{ var re=/^[0-9]*[1-9][0-9]*$/; var result = re.test(this); return result; } }; /** * 检查是否是负整数 * isContainZero 是否包含0 */ String.prototype.isIntNegativ = function(isContainZero){ if(isContainZero){ var re=/(^-[0-9]*[1-9][0-9]*$)|(0)/; var result = re.test(this); return result; }else{ var re=/^-[0-9]*[1-9][0-9]*$/; var result = re.test(this); return result; } }; /******************String***********************/ //检查字符串是否是指定字符串开头,返回true 和 false String.prototype.isStartWith=function(str){ var reg=new RegExp("^"+str); return reg.test(this); }; //检查字符串是否是指定字符串结尾,返回true 和 false String.prototype.isEndWith=function(str){ var reg=new RegExp(str+"$"); return reg.test(this); }; //一个单词首字母大写,返回字符串 String.prototype.capitalize=function(){ var result = this.charAt(0).toUpperCase()+this.substring(1).toLocaleLowerCase(); return result; }; // 保留字母和空格,返回字符串 String.prototype.getEn = function() { var result = this.replace(/[^A-Z a-z]/g, ""); return result; }; //逆序 String.prototype.reverse = function() { return this.split("").reverse().join(""); }; //检查字符串是否包含自定字符串,返回true 和 false String.prototype.isContains=function(target){ var myReg = new RegExp(target); var result = myReg.test(this); return result; }; //去除两边的空格,返回字符串 String.prototype.trim = function() { var result = this.replace(/^\s+|\s+$/g, ""); return result; }; // 除去左边空白,返回字符串 String.prototype.trimLeft = function() { return this.replace(/^\s+/g, ""); }; // 除去右边空白,返回字符串 String.prototype.trimRight = function() { return this.replace(/\s+$/g, ""); }; // 去除所有的空白 String.prototype.delBlank = function() { var result = this.replace(/\s+/g, ""); return result; }; /** * 字符串转换为日期型(原型扩展或重载) * @type Date * @returns 日期 */ String.prototype.toDate = function() { var converted = Date.parse(this); var myDate = new Date(converted); if (isNaN(myDate)) { var arys= this.split('-'); myDate = new Date(arys[0],--arys[1],arys[2]); } return myDate; }; //将json字符串转为json对象 String.prototype.toJson=function(){ return (new Function("return " + this))(); }; function obj2str(o){ var r = []; if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\""; if(typeof o =="undefined") return "undefined"; if(typeof o == "object"){ if(o===null) return "null"; else if(!o.sort){ for(var i in o) r.push(i+":"+obj2str(o[i])) r="{"+r.join()+"}" }else{ for(var i =0;i
测试方法
$(function(){ document.write("--------------------- Date对象扩展 ----------------------------------"+"
"); document.write('new Date().format("yyyy") : ' + new Date().format("yyyy")+"
"); document.write('new Date().format("MM") : ' + new Date().format("MM")+"
"); document.write('new Date().format("dd") : ' + new Date().format("dd")+"
"); document.write('new Date().format("yyyy-MM") : ' + new Date().format("yyyy-MM")+"
"); document.write('new Date().format("yyyy-MM-dd") : ' + new Date().format("yyyy-MM-dd")+"
"); document.write('new Date().format("MM-dd") : ' + new Date().format("MM-dd")+"
"); document.write('new Date().format("hh:mm:ss") : ' + new Date().format("hh:mm:ss")+"
"); document.write('new Date().format("hh") : ' + new Date().format("hh")+"
"); document.write('new Date().format("mm") : ' + new Date().format("mm")+"
"); document.write('new Date().format("ss") : ' + new Date().format("ss")+"
"); document.write('new Date().format("mm:ss") : ' + new Date().format("mm:ss") +"
"); document.write("--------------------- String对象扩展 ----------------------------------"+"
"); var myName = " huang biao "; //字符串长度 document.write("myName.len() : " + myName.len() +"
");//12 document.write("myName.trimLeft().len() : " + myName.trimLeft().len() +"
");//11 document.write("myName.trimRight().len() : " + myName.trimRight().len() +"
");//11 //去除空格 document.write("myName.trim().len() : " + myName.trim().len() +"
");//10 //删除空格 document.write("myName.delBlank() : " + myName.delBlank() +"
");//huangbiao //倒序 document.write("myName.delBlank().reverse() : " + myName.delBlank().reverse() +"
");//oaibgnauh document.write(" myName.isContains('huang') : " + myName.isContains("huang") +"
"); document.write(" myName.isContains('liu') : " + myName.isContains("liu") +"
"); document.write("myName.trim().capitalize() : " + myName.trim().capitalize() +"
"); document.write("myName.trim().isStartWith(\"huang\") : " + myName.trim().isStartWith("huang") +"
"); document.write("myName.trim().isStartWith(\"biao\") : " + myName.trim().isStartWith("biao") +"
"); document.write("myName.trim().isEndWith(\"huang\") : " + myName.trim().isEndWith("huang") +"
"); document.write("myName.trim().isEndWith(\"biao\") : " + myName.trim().isEndWith("biao") +"
"); document.write("--------------------- String对象扩展 内容校验 ----------------------------------"+"
"); document.write(" '0'.isInt() : " + '0'.isInt() +"
"); document.write(" '-12'.isInt() : " + '-12'.isInt() +"
"); document.write(" '12'.isInt() : " + '12'.isInt() +"
"); document.write("'12.3'.isInt() : " + '12.3'.isInt() +"
"); document.write("-----------"+"
"); document.write(" '0'.isIntPositive() : " + '0'.isIntPositive() +"
"); //是否包含0 document.write(" '0'.isIntPositive(true) : " + '0'.isIntPositive(true) +"
"); document.write(" '00'.isIntPositive(true) : " + '00'.isIntPositive(true) +"
"); document.write(" '-12'.isIntPositive() : " + '-12'.isIntPositive() +"
"); document.write(" '12'.isIntPositive() : " + '12'.isIntPositive() +"
"); document.write("'12.3'.isIntPositive() : " + '12.3'.isIntPositive() +"
"); document.write("-----------"+"
"); document.write(" '0'.isIntNegativ() : " + '0'.isIntNegativ() +"
"); //是否包含0 document.write(" '0'.isIntNegativ(true) : " + '0'.isIntNegativ(true) +"
"); document.write(" '00'.isIntNegativ(true) : " + '00'.isIntNegativ(true) +"
"); document.write(" '-12'.isIntNegativ() : " + '-12'.isIntNegativ() +"
"); document.write(" '12'.isIntNegativ() : " + '12'.isIntNegativ() +"
"); document.write("'12.3'.isIntNegativ() : " + '12.3'.isIntNegativ() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloat() : " + '0'.isFloat() +"
"); document.write(" '0'.isFloat(true) : " + '0'.isFloat(true) +"
"); document.write(" '-12'.isFloat() : " + '-12'.isFloat() +"
"); document.write(" '12'.isFloat() : " + '12'.isFloat() +"
"); document.write("'12.3'.isFloat() : " + '12.3'.isFloat() +"
"); document.write("'-12.3'.isFloat() : " + '-12.3'.isFloat() +"
"); document.write("'-12.3.3'.isFloat() : " + '-12.3.3'.isFloat() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloatNegativ() : " + '0'.isFloatNegativ() +"
"); document.write(" '0'.isFloatNegativ(true) : " + '0'.isFloatNegativ(true) +"
"); document.write(" '-12'.isFloatNegativ() : " + '-12'.isFloatNegativ() +"
"); document.write(" '12'.isFloatNegativ() : " + '12'.isFloatNegativ() +"
"); document.write("'12.3'.isFloatNegativ() : " + '12.3'.isFloatNegativ() +"
"); document.write("'-12.3'.isFloatNegativ() : " + '-12.3'.isFloatNegativ() +"
"); document.write("'-12.3.3'.isFloatNegativ() : " + '-12.3.3'.isFloatNegativ() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloatPositive() : " + '0'.isFloatPositive() +"
"); document.write(" '0'.isFloatPositive(true) : " + '0'.isFloatPositive(true) +"
"); document.write(" '-12'.isFloatPositive() : " + '-12'.isFloatPositive() +"
"); document.write(" '12'.isFloatPositive() : " + '12'.isFloatPositive() +"
"); document.write("'12.3'.isFloatPositive() : " + '12.3'.isFloatPositive() +"
"); document.write("'-12.3'.isFloatPositive() : " + '-12.3'.isFloatPositive() +"
"); document.write("'-12.3.3'.isFloatPositive() : " + '-12.3.3'.isFloatPositive() +"
"); document.write("-----------"+"
"); var personObj = { "name":"huangbiao", age:18 }; document.write("obj2str(personObj) : " + obj2str(personObj) +"
"); document.write("JsonToString(personObj) : " + JsonToString(personObj) +"
"); });