近期做了一个测试页面,用到了一些校验规则,因为时间紧急没有经过反复测试,可能有些漏洞,整理一下用于备忘;
基于js的特殊字符校验
//定义正则校验特殊字符
var reg = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\]<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");
if(reg.test(e.value)) {
alert("该字段格式不允许出现特殊字符.");
e.value = null;
e.style.backgroundColor = 'red';
return false;
}
校验未添加控件的日期格式
//校验日期格式
function checkDate(e,str){
//校验非空
if(!checkCommonField(e,str)){
return false;
};
var date = e.value;
var checkDate = e.value;
var startDate = document.getElementById("prpTmain.startDate");
var endDate = document.getElementById("prpTmain.endDate");
//定义日期正则
var reg = /^(([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]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)/;
var regFix = /^(\d{4})-(\d{2})-(\d{2})$/;
//校验起止日期格式
console.log(!reg.test(checkDate) || !regFix.test(checkDate));
//双校验一个未通过即提示
if(!reg.test(checkDate) || !regFix.test(checkDate)) {
alert("日期格式不正确,正确格式格式应为YYYY-MM-DD!");
e.style.backgroundColor = 'red';
e.value = null;
return false;
}
//校验起始日期不可大于终止日期
if(startDate.value == ""){
alert("抱歉,请先输入起始日期,本次输入无效");
e.style.backgroundColor = 'red';
endDate.value = null;
return false;
}else{
//如果终止日期为空则没有意义,所以进行一次判断
if(endDate.value != ''){
console.log('获取起始日期时间为:'+(new Date(startDate.value)).getTime());
console.log('获取终止日期时间为:'+(new Date(endDate.value)).getTime());
if((new Date(startDate.value).getTime())>(new Date(endDate.value).getTime())){
alert("起始时间不能大于终止时间");
endDate.value = null;
return false;
}
}
}
e.style.backgroundColor = 'white';
return true;
}
校验数字格式
/* 校验纯数字格式 */
function checkoNumber(e,str){
//校验非空
if(!checkCommonField(e,str)){
return false;
};
//定义校验标准
//校验正整数
var reg = /^\d+$/;
//校验正小数
var regFix = /^\d+\.\d+$/;
//双校验均未通过,报错提示
if(!reg.test(e.value) && !regFix.test(e.value)) {
e.style.backgroundColor = 'red';
alert(str+"格式不正确,只能填写数字!")
return false;
}
else{
e.style.backgroundColor = 'white';
}
return true;
}