js对Date类和String的扩展

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;
	else
		return 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;
	else
		return 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;
	else
		return true;
};
/**
 * 验证是否为全中文
 */
//
String.prototype.isChinese = function() {
	var o = this.trim();
	if (/[^\u4e00-\u9fa5]/g.test(o))
		return false;
	else
		return true;
};
/**
 * 验证是否为正确的价钱格式 999.99 小数点后两位小数
 */
//
String.prototype.isMoney = function() {
	var o = this.trim();
	if (/-?\d+(\.\d{0,2})?/.test(o))
		return true;
	else
		return 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;
	else
		return false;
};
/**
 * 验证是否为正确的价钱格式 999.99 小数点后两位小数
 */
//
String.prototype.isMoney = function() {
	var o = this.trim();
	if (/-?\d+(\.\d{0,2})?/.test(o))
		return true;
	else
		return 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;
	else
		return 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;
	else
		return 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) {// ie
		var doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = "false";
		doc.loadXML(s);
	} else {// firefox
		var 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 locale
		format = '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 string
	while (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);//将最后三位的毫秒数转为000
				console.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz_cl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值