日期:2014-05-16  浏览次数:20379 次

[备忘]js表单值正则表达式验证工具
//用法,写个提交表单的方法,提交前使用
function submitForm() {
	var matcher = new checkObj();
	matcher.add($("[name='nodePort']").val(), portMatch);
	matcher.add($("[name='nodeIP']").val(), ipMatch);
	if(!matcher.check()) return;
	document.cardForm.submit();
}



//下面是代码,已经包含了一些常用的正则对象,没有的话自己加

//格式:var a = {""exp" : 正则表达式, "warning" : 提示信息};

//例:var numMatch = {"exp" : /^([A-Za-z0-9]+)?$/, "warning" : "请输入英文或数字!"};

//--------------js代码-----------------------------------------

/**
 * 多表单项正则验证对象
 * 例:
 * var matcher = new checkObj();
 * matcher.add($("[name='nodePort']").val(), portMatch);
 * //ipMatch["warning"] = "IP地址错误!"; // 自定义提示信息,覆盖默认的提示信息
 * matcher.add($("[name='nodeIP']").val(), ipMatch);
 * if(!matcher.check()) return;
 */
function checkObj() {
	var _this = this;
	this.array = new Array();
	/**
	 * 增加需要验证的表单值和正则
	 * @param 要验证的表单值
	 * @param 正则对象
	 */
	this.add = function(value, expObj) {
		var tempMap = {};
		tempMap[value] = expObj;
		this.array.push(tempMap);
	}
	
	/**
	 * 开始验证
	 */
	this.check = function() {
		return checkInputs(_this.array);
	}
}

/**
 * 多表单项正则验证
 * @param 验证对象集合
 * @return 验证通过返回true;
 */
function checkInputs(paramArray) {
	var flag = true;
	if (paramArray == undefined || paramArray == null) {
		return flag;
	}
	for (var i in paramArray) {
		for (var key in paramArray[i]) {
			if(!checkInput(key, paramArray[i][key])) {
				flag = false;
			}
		}
		if (!flag) {
			break;
		}
	}
	return flag;
}

/**
 * 单个表单项正则验证
 * @param 表单项需要验证的值
 * @param 验证对象,如ipMatch,portMatch,是map类型,格式为{"exp":"正则条件","warning":"提示语"}
 * @param 提示信息(不必填)
 * @return 验证通过返回true,调用函数例子if (!checkInput) return;
 */
function checkInput(value, paramMap, warning) {
	if (value == undefined || value == null) {
		return true;
	}
	if (paramMap["exp"] == undefined || paramMap["exp"] == null) {
		return true;
	}
	var exp = paramMap["exp"];
	var reg = value.match(exp);
	if (reg == null) {
		if (warning != undefined && warning != null) {
			alert(warning);
		} else {
			alert(paramMap["warning"]);
		}
		return false;
	}
	return true;
}
// 判空
var nullMatch = {"exp" : /^\S+$/, "warning" : "请将必填选项填写完整,且不能有空格!"};
// ip正则
var ipMatch = {"exp" : /^(([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){2}([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))?$/, "warning" : "请输入正确的IP地址格式!"};
// 端口号正则
var portMatch = {"exp" : /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])?$/, "warning" : "请输入正确的端口号!"};
// 手机号
var mobileMatch = {"exp" : /^((13+\d{9})|(15+\d{9})|(18+\d{9}))?$/, "warning" : "请输入正确的手机号!"};
// 固定电话
var telMatch = {"exp" : /^((\(\d{3,4}\)|\d{3,4}-|\s)?\d{8})?$/, "warning" : "请输入正确的固定电话号码!"};
// 邮箱
var emailMatch = {"exp" : /^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)?$/, "warning" : "请输入正确的电子邮箱号!"};
// 身份证号码
var idCardMatch = {"exp" : /^(\d{18}|\d{15})?$/, "warning" : "请输入正确的身份证号码!"};
// 中文
var cnMatch = {"exp" : /^([\u4e00-\u9fa5]{0,})?$/, "warning" : "请输入中文汉字!"};
// 数字
var nanMatch = {"exp" : /^[0-9]*$/, "warning" : "请输入数字!"};
// 整数或小数
var numMatch = {"exp" : /^([0-9]+\.{0,1}[0-9]{0,2})?$/, "warning" : "请输入数字!"};
// 正整数 
var piMatch = {"exp" : /^(0|[1-9][0-9]*)?$/, "warning" : "请输入正整数!"};
// 英文或数字
var numMatch = {"exp" : /^([A-Za-z0-9]+)?$/, "warning" : "请输入英文或数字!"};