js对Date类和String的扩展

来源:互联网 发布:mac安装homebrew失败 编辑:程序博客网 时间:2024/05/18 13:30

String类利用prototype进行扩展

js代码

/** * 去除前后空格 */String.prototype.trim = function() {return this.replace(/^\s*|\s*$/g, "");};/** * 验证是否为数字 */String.prototype.isNumber = function() {var o = this.trim();if (isNaN(Math.round(o)))return false;elsereturn true;};/** * 验证是否为正整数 */String.prototype.isInteger = function() {var o = this.trim();var reg0 = /^[1-9]\d*$/;return reg0.test(o);};/** * 验证是否为手机号码 */String.prototype.isMobile = function() {var o = this.trim();var reg0 = /^(\+86)?13\d{9}$/; // 130--139。至少7位var reg1 = /^(\+86)?15\d{9}$/; // 联通153。至少7位var reg2 = /^(\+86)?18\d{9}$/; // 移动159。至少7位return (reg0.test(o) || reg1.test(o) || reg2.test(o));};/** * 验证是否为电话号码 *///String.prototype.isPhone = function() {var o = this.trim();if (/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test(o))return true;elsereturn false;};/** * 将string转换为number,正负皆可 (如果字符串是浮点数,则小数点后建议控制在7位以内,第8位通常不能正确的四舍五入,具体边界不明) */String.prototype.toNumber = function() {var o = this.trim();if (o.indexOf(".") > -1) {// 浮点数var a = o.split(".");var j = Math.round(o.replace(".", "")) / Math.pow(10, a[1].length);return j;} else {// 整数return Math.round(o);}};/** * 验证是否全为英文字母(只包含大小写字母,不包括“_”和数字) */String.prototype.isLetter = function() {var o = this.trim();if (/[^a-zA-Z]/g.test(o))return false;elsereturn true;};/** * 验证是否为全中文 *///String.prototype.isChinese = function() {var o = this.trim();if (/[^\u4e00-\u9fa5]/g.test(o))return false;elsereturn true;};/** * 验证是否为正确的价钱格式 999.99 小数点后两位小数 *///String.prototype.isMoney = function() {var o = this.trim();if (/-?\d+(\.\d{0,2})?/.test(o))return true;elsereturn false;};/** * 验证是否为正确的email格式 *///String.prototype.isEmail = function() {var o = this.trim();if (/^[a-zA-Z0-9]([a-zA-Z0-9]*[-_.]?[a-zA-Z0-9]+)+@([\w-]+\.)+[a-zA-Z]{2,}$/.test(o))return true;elsereturn false;};/** * 验证是否为正确的价钱格式 999.99 小数点后两位小数 *///String.prototype.isMoney = function() {var o = this.trim();if (/-?\d+(\.\d{0,2})?/.test(o))return true;elsereturn false;}/** * 验证是否为正确的email格式 *///String.prototype.isEmail = function() {var o = this.trim();if (/^[a-zA-Z0-9]([a-zA-Z0-9]*[-_.]?[a-zA-Z0-9]+)+@([\w-]+\.)+[a-zA-Z]{2,}$/.test(o))return true;elsereturn false;}/** * 验证是否为正确的ip地址 *///String.prototype.isIp = function() {var o = this.trim();if (/(\d+)\.(\d+)\.(\d+)\.(\d+)/g.test(o)) {if (Math.round(RegExp.$1) < 256 && Math.round(RegExp.$2) < 256&& Math.round(RegExp.$3) < 256 && Math.round(RegExp.$4) < 256)return true;}return false;}/** * 验证是否为正确的邮政编码 *///String.prototype.isPostCode = function() {var o = this.trim();if (/\d{6}/.test(o))return true;elsereturn false;}/** * 验证长度是否在限定范围内,中文等双字节文字算2个字符长度 *///String.prototype.isWithin = function(n) {var o = this.trim();if (o.count() <= n) {return true;} else {return false;}}/** * 计算字符串长度,中文等双字节文字算2个字符 *///String.prototype.count = function() {return this.replace(/[^\x00-\xff]/g, "mm").length;}/** * 将字符串转成xml格式 */String.prototype.parseXML = function() {var s = this.trim();s = s.replace(/(^[\r\n\t ]+)|([\r\n\t ]+$)/gmi, "")if (window.ActiveXObject) {// ievar doc = new ActiveXObject("Microsoft.XMLDOM");doc.async = "false";doc.loadXML(s);} else {// firefoxvar parser = new DOMParser();var doc = parser.parseFromString(s, "text/xml");}return doc;}function replaceChars(entry,orgStr,replaceStr){temp = "" + entry;while (temp.indexOf(orgStr) > -1){pos= temp.indexOf(orgStr);temp = "" + (temp.substring(0, pos) + replaceStr + temp.substring((pos + orgStr.length), temp.length));}return temp;}
html代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  <script type="text/javascript" src="jquery-1.7.js"></script>  <script type="text/javascript" src="jquery-1.7.min.js"></script>  <script type="text/javascript" src="my.js"></script>  <script type="text/javascript">  $(function(){    var br = $("<br/>");  $(".myspan").append(br);  });  </script>  </head>    <body>     <script type="text/javascript">    document.write(" 测试字符串   ".trim());    </script>    <span class="myspan"></span>    <script type="text/javascript">    document.write("  -3.8  ".isNumber()+"<br/>");    document.write("  3.8  ".isInteger()+"<br/>");    document.write("  133  ".isMobile()+"<br/>");    document.write("0663-4568789".isPhone()+"<br/>");    document.write("0663.4568789".toNumber()+"      type is:"+$.type("0663.4568789".toNumber())+"<br/>");    document.write("日发售的".isChinese()+"<br/>");    document.write("日发售的".isWithin(12)+"<br/>");    document.write("字符串替换"+replaceChars("abcdefghiiiiiaf","h","eee")+"<br/>");    </script>  </body></html>
输出


Date类利用prototype进行扩展

js代码

/** * 去除前后空格 */String.prototype.trim = function() {return this.replace(/^\s*|\s*$/g, "");};Date.prototype.dateFormat = function(format, obj) {if (!format) { // the default date format to use - can be customized to the// current localeformat = 'Y-m-d';}LZ = function(x) {return (x < 0 || x > 9 ? '' : '0') + x};var MONTH_NAMES = new Array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月','九月', '十月', '十一月', '十二月', '一', '二', '三', '四', '五', '六', '日', '八','九', '十', '十一', '十二');var DAY_NAMES = new Array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六','日', '一', '二', '三', '四', '五', '六');var result = "";var i_format = 0;var c = "";var token = "";// if(obj)alert(obj.displayYears+":"+obj.displayMonths+":"+obj.displayDates);var y = (obj && obj.displayYears) ? obj.displayYears : (this.getFullYear().toString());var M = (obj && obj.displayMonths)? obj.displayMonths: (this.getMonth() + 1);var d = (obj && obj.displayDates) ? obj.displayDates : this.getDate();var E = this.getDay();var H = (obj && obj.displayHour >= 0) ? obj.displayHour : this.getHours();var m = (obj && obj.displayMinute >= 0) ? obj.displayMinute : this.getMinutes();var s = (obj && obj.displaySecond >= 0) ? obj.displaySecond : this.getSeconds();var value = {Y : y,y : y.substring(2),n : M,m : LZ(M),F : MONTH_NAMES[M - 1],M : MONTH_NAMES[M + 11],j : d,d : LZ(d),D : DAY_NAMES[E + 7],l : DAY_NAMES[E],G : H,H : LZ(H),hh : LZ(H),mm : LZ(m),ss : LZ(s)};if (H == 0) {value['g'] = 12;} else if (H > 12) {value['g'] = H - 12;} else {value['g'] = H;}value['h'] = LZ(value['g']);if (H > 11) {value['a'] = 'pm';value['A'] = 'PM';} else {value['a'] = 'am';value['A'] = 'AM';}value['i'] = LZ(m);value['s'] = LZ(s);// construct the result stringwhile (i_format < format.length) {c = format.charAt(i_format);token = "";while ((format.charAt(i_format) == c) && (i_format < format.length)) {token += format.charAt(i_format++);}if (value[token] != null) {result = result + value[token];} else {result = result + token;}}return result;};function DateValidator(date1,date2){//构造日期Date的五种方法//1)new Date("month dd,yyyy hh:mm:ss"); //2)new Date("month dd,yyyy"); //3)new Date(yyyy,mth,dd,hh,mm,ss); //4)new Date(yyyy,mth,dd); //5)new Date(ms); //new Date("January 12,2006 22:19:35"); //new Date("January 12,2006"); //new Date(2006,0,12,22,19,35); //new Date(2006,0,12); //new Date(1137075575000); //var da1num1 = obj1.toString().trim().replace(/\D/g, '').toNumber();//var da1num2 = obj2.toString().trim().replace(/\D/g, '').toNumber();//console.log(da1num1);//console.log(da1num2);if(date1.getTime()>date2.getTime()){console.log("开始时间大于结束时间");}if(date1.getTime()<date2.getTime()){console.log("开始时间小于结束时间");}else{}}      DateValidator(new Date(2010,3,12),new Date(2010,3,13));/** * 比较两个日期前后 *  * @param {} *            beginDate * @param {} *            endDate * @return {Boolean} */function compareDate(beginDate, endDate) {var d1 = new Date(beginDate.toString().trim().replace(/-/g, "/"));var d2 = new Date(endDate.toString().trim().replace(/-/g, "/"));if ((d1 - d2) > 0)console.log("开始时间大于结束时间");if ((d1 - d2) < 0)console.log("开始时间小于结束时间");}compareDate(new Date(2012,6,12),new Date(2010,6,12));var flag=true;myUtil = {init : function() {if(flag){console.log("调用初始化方法,允许使用formateDate");return true;}return false;},formateDate : function() {if(myUtil.init()){var formateTime = new Date();return formateTime.dateFormat("Y-m-d H:mm:ss");}else{console.log("初始化失败,不允许使用formateDate");return "";}},formateDate2 : function(date) {var year = date.getFullYear();//获取完整的年份(4位,1970)var month = date.getMonth()+1;//获取月份(0-11,0代表1月,用的时候记得加上1)var day = date.getDate();//获取日(1-31)var time = date.getTime();//获取时间(从1970.1.1开始的毫秒数)var hours = date.getHours();//获取小时数(0-23)var minutes = date.getMinutes();//获取分钟数(0-59)var seconds = date.getSeconds();//获取秒数(0-59)console.log(year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds);//三种方式得到时间戳var timestamp1 = Date.parse(date);//将最后三位的毫秒数转为000console.log(timestamp1);var timestamp2 = date.valueOf();console.log(timestamp2);var timestamp3 =date.getTime();console.log(timestamp3);//根据时间戳构造日期console.log(new Date(time).getTime());}};
html代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  <script type="text/javascript" src="jquery-1.7.js"></script>  <script type="text/javascript" src="jquery-1.7.min.js"></script>  <script type="text/javascript" src="my.js"></script>   </head>    <body>     <script type="text/javascript">    document.write(myUtil.formateDate());    myUtil.formateDate2(new Date());    </script>  </body></html>
输出


对js正则表达式的几点补充

1,/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
2,/i  表示匹配的时候不区分大小写
3,/m 表示多行匹配,什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号
4, /表示正则的开始和结束,\表示转义
 var reg=/^11\d{8}$/;
 reg.test(“1133333333”)

java:

Pattern pattern = Pattern.compile("^11(\\d){8}$(.*(?<!00000)$)");//不以00000结尾Matcher m = pattern.matcher("11333333");m.find()


0 0
原创粉丝点击