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()