web页面开发经常会遇到数据验证及URL处理,同时涉及到正则表达式,下面就本人常用的借鉴或自行开发的js处理方法粘函数贴出来,供大家参考(需先引入jquery框架):
//页面加载函数
$(function () {
//$("input[type='text'],textarea").attr("autocomplete", "off");(关闭或打开文本框自动保存)
var pd = $("#printtr");
var ed = $("#edittr");
var print = getQueryStrVal("type");
if (print == "print") {
pd.show();
ed.hide();
}
//父级框架高度自适应
var parent = $(window.parent.document).find("iframe");
//alert(parent.src);
if (parent != "undefined" && parent!=null) {
parent.load(function () {
var heig = $(this).css("height") < 400 ? 400 : body.css("height");
// alert(heig);
// $(this).css({ "height": "560px", "overflow": "auto" });
})
}
//本页面框架高度自适应
var iframe = $("iframe");
// alert(parent.src);
if (iframe != "undefined" && parent != null) {
iframe.load(function () {
var mainheight = $(this).contents().find("body").height();
//alert(mainheight);
$(this).css({ "height": "580px", "overflow": "auto" });
});
}
//本页面高度
var body = $(document.body) || $(document);
if (body) {
//alert(body.css("height"));
var heig = body.css("height") < 400 ? 400 : body.css("height");
// alert(heig);
body.css({ "height": heig, "overflow": "auto" });
}
})
//页面利用页面原始url参数跳转到新页面,参数新页面名称
function psotEditUrl(page) {
var url = "";
var hr = window.location.href;
if (hr.indexOf('?') > 0) {
url = hr.split('?')[1];
}
window.location.href = page + '?' + url;
return false;
}
//验证页面textbox及DropDownList控件
//用法:if (!NullCheck(brm, '请XX名称', '')) { return false; }
//参数1(控件ID),参数2(验证说明消息),参数3(显示标签ID)(可选)
function NullCheck(txt, alm, lbm) {
var va = document.getElementById(txt);
var lm = document.getElementById(lbm);
if (va == null) { alert(txt + "验证对象不存在!"); return false; }
if (lm != null) { lm.innerText = ""; }
if (va.value == "" || va.value.length == 0) {
if (lbm == null || lbm == "") { alert(alm); va.focus(); return false; }
else {
if (lm == null) { alert(lbm + "标签不存在!"); return false; }
lm.innerText = alm; va.focus(); return false;
}
}
return true;
}
//验证对象是否存在
function iftr(p) { return p != undefined && p != null && p.toString() != "undefined" && p.length > 0; }
function ifstr(p) { return p != undefined && p != null && p.toString() != "undefined" && p.length == 0; }
//URL加密
function addencode(p) { return (p != null && p != undefined && p.length > 0) ? encodeURIComponent(p) : ""; }
//删除字符串HML标签元素,大于指定长度带...
//参数1(字符串),参数2(指定长度)
function delHtmlTag(str, n) {
var txt = '';
if (iftr(str)) {
txt = str.replace(/<[^>]+>/g, "");
if (txt.length > n) { txt = txt.substring(0, n - 2) + ".."; }
}
return txt;
}
//删除字符串HML标签元素,大于指定长度不带...
//参数1(字符串),参数2(自定长度)
function delHtmlSub(str, n) {
var txt = '';
if (iftr(str)) {
txt = str.replace(/<[^>]+>/g, "");
if (txt.length > n) { txt = txt.substring(0, n); }
}
return txt;
}
//删除字符串HML标签元素
//参数1(html字符串)
function delHtml(str) {
var txt = '';
if (iftr(str)) {
txt = str.replace(/<[^>]+>/g, "");
}
return txt;
}
//正整数验证
function CheckIsInteger(o) {
if (o.value.length > 0) {
var test1 = o.value;
var type = "^[0-9]*[1-9][0-9]*$";
var re = new RegExp(type);
if (test1.match(re) == null) {
// alert("格式不正确,应输入正整数!");
o.value = '';
return;
}
}
}
//验证小时分钟大小函数,通用 结束时间须大于开始时间
function dateCump(date1, date2) {
var dates1 = '2014/01/01 ' + date1.replace(/-/g, "/") + ":00";
var dates2 = '2014/01/01 ' + date2.replace(/-/g, "/") + ":00";
var de1 = Date.parse(new Date(dates1));
var de2 = Date.parse(new Date(dates2));
if ((de1 - de2) > 0 || (de1 - de2) == 0) {
return false;
}
return true;
}
//验证日期小时分钟大小函数,通用结束时间须大于开始时间
function datehmCump(date1, date2) {
var dates1 = date1.replace(/-/g, "/");
var dates2 = date2.replace(/-/g, "/");
var de1 = Date.parse(new Date(dates1));
var de2 = Date.parse(new Date(dates2));
if ((de1 - de2) > 0 || (de1 - de2) == 0) {
return false;
}
return true;
}
//返回时间差的double值
function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2006-12-18格式
var aDate, oDate1, oDate2, iDays
aDate = sDate1.split("-")
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为12-18-2006格式
aDate = sDate2.split("-")
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) //把相差的毫秒数转换为天数
var da = (Date.parse(oDate1) - Date.parse(oDate2));
//alert(da);
if (da > 0) {
// alert("结束时间不能大于请假时间!");
iDays = '-' + iDays;
}
return iDays
}
//短时间验证,形如 (13:04:06)
function isTime(str) {
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
if (a == null) { return false }
if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
return false;
}
return true;
}
/**
* 小时:分钟的正则表达式检查(08:11)
*/
//小时:分钟验证(08:11)
function isHoursTmer(str) {
if (str == null) {
return false;
}
var re = /^([0-1]{1}\d|2[0-3]):([0-5]\d)$/;
return !re.test(str);
}
//短日期验证,形如 (2003-12-05)
function isDate(str) {
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if (r == null) return false;
var d = new Date(r[1], r[3] - 1, r[4]);
return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
}
//长时间验证,形如 (2003-12-05 13:04:06)
function isDateTimes(str) {
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})|(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if (r == null) return false;
var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}
//正整数验证
function isNum(str) {
var rg = /^[1-9]\d*$/;
if (!rg.test(str)) {
return false;
}
return true;
}
//获取指定url参数值
//参数1(url)键,参数1(完整url,可选默认为本页),
function getQueryStrVal(name, src) {
var ret = '';
if (src == null || src == "" || src == undefined) { src = window.location.href; }
if (src.indexOf("?") >= 0 && src.indexOf(name + '=') >= 0) {
var query = src.substring(src.indexOf("?") + 1); var params = query.split("&");
for (var n in params) {
var child = params[n].split("="); if (child.length > 0) {
if (name == child[0]) { ret = child[1]; break; }
}
}
}
return ret;
}
//验证电话及手机
function checkTel(txt, me) {
var reg = /^(0\d{11}|\d{11}|\d{8}|\d{3,4}-\d{7,8})?(-\d{1,8})?$/;
var txtbox = document.getElementById(txt);
var mes = document.getElementById(me);
mes.innerText = '';
if (txtbox.value != '' && !reg.test(txtbox.value)) {
if (mes != null) {
mes.innerText = "输入电话格式不正确";
}
else {
alert("输入电话格式不正确");
}
txtbox.focus();
return false;
}
return true;
}
//验证邮箱
function checkEmail(txt, me) {
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var txtbox = document.getElementById(txt);
var mes = document.getElementById(me);
mes.innerText = '';
if (txtbox.value != '' && !reg.test(txtbox.value)) {
if (mes != null) {
mes.innerText = "输入邮箱格式不正确";
}
else {
alert("输入邮箱格式不正确");
}
txtbox.focus();
return false;
}
return true;
}
//返回当前时间字符串(月份加1)
function formatDate(da) {
var year = da.getFullYear();
var month = da.getMonth()+1;
var day = da.getDate();
var hour = da.getHours();
var min = da.getMinutes();
var s = da.getSeconds();
return year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + s;
}
//返回当前Date时间对象(月份加1)
function getCurrDate() {
var da = new Date();
var year = da.getFullYear();
var month = da.getMonth() + 1;
var day = da.getDate();
var hour = da.getHours();
var min = da.getMinutes();
var s = da.getSeconds();
return new Date(year, month, day, hour, min, s);
}
//当前时间字符串(标准不足两位数带0格式)
function formatDates(da, n) {
var ret = '';
if (da != null) {
var year = da.getFullYear();
var month = da.getMonth();
if (n != null) { month = month + 1; }
var day = da.getDate();
var hour = da.getHours();
var min = da.getMinutes();
var second = da.getSeconds();
if (month < 10) { month = "0" + month; }
if (day < 10) { day = "0" + day; }
if (hour < 10) { hour = "0" + hour; }
if (min < 10) { min = "0" + min; }
if (second < 10) { second = "0" + second; }
ret = year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + second;
}
return ret;
}
//其它常用正则表达式
var regexEnum =
{
intege: "^-?[1-9]\\d*$", //整数
intege1: "^[1-9]\\d*$", //正整数
intege2: "^-[1-9]\\d*$", //负整数
num: "^([+-]?)\\d*\\.?\\d+$", //数字
num1: "^[1-9]\\d*|0$", //正数(正整数 + 0)
num2: "^-[1-9]\\d*|0$", //负数(负整数 + 0)
decmal: "^([+-]?)\\d*\\.\\d+$", //浮点数
decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$", //正浮点数
decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$", //负浮点数
decmal3: "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$", //浮点数
decmal4: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$", //非负浮点数(正浮点数 + 0)
decmal5: "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$", //非正浮点数(负浮点数 + 0)
email: "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
color: "^[a-fA-F0-9]{6}$", //颜色
url: "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$", //url
chinese: "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$", //仅中文
ascii: "^[\\x00-\\xFF]+$", //仅ACSII字符
zipcode: "^\\d{6}$", //邮编
mobile: "^(13[0-9]{9}|15[012356789][0-9]{8}|18[0256789][0-9]{8}|147[0-9]{8}$)", //手机
ip4: "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$", //ip地址
notempty: "^\\S+$", //非空
picture: "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", //图片
rar: "(.*)\\.(rar|zip|7zip|tgz)$", //压缩文件
date: "\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$", //日期
date1: "^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$", //日期
datetime: "([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})/(((0[13578]|1[02])/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)/(0[1-9]|[12][0-9]|30))|(02/(0[1-9]|[1][0-9]|2[0-8])))|([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})/((([13578]|1[02])/([1-9]|[12][0-9]|3[01]))|(([469]|11)/([1-9]|[12][0-9]|30))|(2/([1-9]|[1][0-9]|2[0-8])))", //日期+时间
qq: "^[1-9]*[1-9][0-9]*$", //QQ号码
tel: "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$|^(\\d{11})$", //电话号码的函数(包括验证国内区号,国际区号,分机号),另可验证手机号码
username: "^\\w+$", //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
letter: "^[A-Za-z]+$", //字母
letter_u: "^[A-Z]+$", //大写字母
letter_l: "^[a-z]+$", //小写字母
idcard: "^[1-9]([0-9]{14}|[0-9]{17})$", //身份证
time: "^\[0-2]{1}\[0-6]{1}:\[0-5]{1}\[0-9]{1}:\[0-5]{1}\[0-9]{1}", //时间验证
hime: "^([0-1]{1}\\d|2[0-3]):([0-5]\\d)$" //小时分钟验证^(([0-1]\d)|(2[0-4])):[0-5]\d$ " ^([0-1]{1}\d|2[0-3]):([0-5]\d)$";
}