`
chengyu2099
  • 浏览: 471362 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

正则表达式 验证表单 regular

阅读更多
 <title>表单验证类 Validator v1.01</title>
 <style>
 body,td{font:normal 12px Verdana;color:#333333}
 input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}
 table{border-collapse:collapse;}
 td{padding:3px}
 input{height:20;}
 textarea{width:80%;height:50px;overfmin:auto;}
 form{display:inline}
 </style>
 <table align="center">
  <form name="theForm" id="demo" action="" method="get" onSubmit="return Validator.Validate(this,2)">
    <tr>
   <td>真实姓名:</td><td><input name="Name" dataType="Chinese" msg="真实姓名只允许中文"></td>
  </tr>
  <tr>
   <td>英文名:</td><td><input name="Nick" dataType="English" require="false" msg="英文名只允许英文字母"></td>
  </tr>
    <tr>
   <td>主页:</td><td><input name="Homepage" require="false" dataType="Url"   msg="非法的Url"></td>
  </tr>
  <tr>
   <td>密码:</td><td><input name="Password" dataType="SafeString"   msg="密码不符合安全规则" type="password"></td>
  </tr>
  <tr>
   <td>重复:</td><td><input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password"></td>
  </tr>
  <tr>
   <td>信箱:</td><td><input name="Email" dataType="Email" msg="信箱格式不正确"></td>
  </tr>
    <tr>
   <td>信箱:</td><td><input name="Email" dataType="Repeat" to="Email" msg="两次输入的信箱不一致"></td>
  </tr>
  <tr>
   <td>QQ:</td><td><input name="QQ" require="false" dataType="QQ" msg="QQ号码不存在"></td>
  </tr>
    <tr>
   <td>身份证:</td><td><input name="Card" dataType="IdCard" msg="身份证号码不正确"></td>
  </tr>
  <tr>
   <td>年龄:</td><td><input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28"></td>
  </tr>
   <tr>
   <td>年龄1:</td><td><input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>
  </tr>
   <tr>
   <td>电话:</td><td><input name="Phone" require="false" dataType="Phone" msg="电话号码不正确"></td>
  </tr>
   <tr>
   <td>手机:</td><td><input name="Mobile" require="false" dataType="Mobile" msg="手机号码不正确"></td>
  </tr>
     <tr>
   <td>生日:</td><td><input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在"></td>
  </tr>
   <tr>
   <td>邮政编码:</td><td><input name="Zip" dataType="Custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在"></td>
  </tr>
  <tr>
   <td>邮政编码:</td><td><input name="Zip1" dataType="Zip" msg="邮政编码不存在"></td>
  </tr>
  <tr>
   <td>操作系统:</td><td><select name="Operation" dataType="Require"  msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>
  </tr>
  <tr>
   <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio" dataType="Group"  msg="必须选定一个省份" ></td>
  </tr>
  <tr>
   <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3"  msg="必须选择2~3种爱好"></td>
  </tr>
   <td>自我介绍:</td><td><textarea name="Description" dataType="Limit" max="10"  msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td>
  </tr>
     <td>自传:</td><td><textarea name="History" dataType="LimitB" min="3" max="10"  msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>
  </tr>
  <tr>
   <td colspan="2"><input name="Submit" type="submit" value="确定提交"><input onClick="Validator.Validate(document.getElementById('demo'))" value="检验模式1" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),2)" value="检验模式2" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),3)" value="检验模式3" type="button"></td>
  </tr>
  </form>
 </table>
 <script>
 /*************************************************
	Validator v1.01
	code by 我佛山人
	wfsr@cunite.com
	http://www.cunite.com
*************************************************/
 Validator = {
	Require : /.+/,
	Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
	Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
	Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
	Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
	IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
	Currency : /^\d+(\.\d+)?$/,
	Number : /^\d+$/,
	Zip : /^[1-9]\d{5}$/,
	QQ : /^[1-9]\d{4,8}$/,
	Integer : /^[-\+]?\d+$/,
	Double : /^[-\+]?\d+(\.\d+)?$/,
	English : /^[A-Za-z]+$/,
	Chinese :  /^[\u0391-\uFFE5]+$/,
	UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
	IsSafe : function(str){return !this.UnSafe.test(str);},
	SafeString : "this.IsSafe(value)",
	Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",
	LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
	Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
	Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
	Range : "getAttribute('min') < value && value < getAttribute('max')",
	Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
	Custom : "this.Exec(value, getAttribute('regexp'))",
	Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",
	ErrorItem : [document.forms[0]],
	ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],
	Validate : function(theForm, mode){
		var obj = theForm || event.srcElement;
		var count = obj.elements.length;
		this.ErrorMessage.length = 1;
		this.ErrorItem.length = 1;
		this.ErrorItem[0] = obj;
		for(var i=0;i<count;i++){
			with(obj.elements[i]){
				var _dataType = getAttribute("dataType");
				if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
				this.ClearState(obj.elements[i]);
				if(getAttribute("require") == "false" && value == "") continue;
				switch(_dataType){
					case "Date" :
					case "Repeat" :
					case "Range" :
					case "Compare" :
					case "Custom" :
					case "Group" : 
					case "Limit" :
					case "LimitB" :
					case "SafeString" :
						if(!eval(this[_dataType]))	{
							this.AddError(i, getAttribute("msg"));
						}
						break;
					default :
						if(!this[_dataType].test(value)){
							this.AddError(i, getAttribute("msg"));
						}
						break;
				}
			}
		}
		if(this.ErrorMessage.length > 1){
			mode = mode || 1;
			var errCount = this.ErrorItem.length;
			switch(mode){
			case 2 :
				for(var i=1;i<errCount;i++)
					this.ErrorItem[i].style.color = "red";
			case 1 :
				alert(this.ErrorMessage.join("\n"));
				this.ErrorItem[1].focus();
				break;
			case 3 :
				for(var i=1;i<errCount;i++){
				try{
					var span = document.createElement("SPAN");
					span.id = "__ErrorMessagePanel";
					span.style.color = "red";
					this.ErrorItem[i].parentNode.appendChild(span);
					span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
					}
					catch(e){alert(e.description);}
				}
				this.ErrorItem[1].focus();
				break;
			default :
				alert(this.ErrorMessage.join("\n"));
				break;
			}
			return false;
		}
		return true;
	},
	limit : function(len,min, max){
		min = min || 0;
		max = max || Number.MAX_VALUE;
		return min <= len && len <= max;
	},
	LenB : function(str){
		return str.replace(/[^\x00-\xff]/g,"**").length;
	},
	ClearState : function(elem){
		with(elem){
			if(style.color == "red")
				style.color = "";
			var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
			if(lastNode.id == "__ErrorMessagePanel")
				parentNode.removeChild(lastNode);
		}
	},
	AddError : function(index, str){
		this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
		this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
	},
	Exec : function(op, reg){
		return new RegExp(reg,"g").test(op);
	},
	compare : function(op1,operator,op2){
		switch (operator) {
			case "NotEqual":
				return (op1 != op2);
			case "GreaterThan":
				return (op1 > op2);
			case "GreaterThanEqual":
				return (op1 >= op2);
			case "LessThan":
				return (op1 < op2);
			case "LessThanEqual":
				return (op1 <= op2);
			default:
				return (op1 == op2);            
		}
	},
	MustChecked : function(name, min, max){
		var groups = document.getElementsByName(name);
		var hasChecked = 0;
		min = min || 1;
		max = max || groups.length;
		for(var i=groups.length-1;i>=0;i--)
			if(groups[i].checked) hasChecked++;
		return min <= hasChecked && hasChecked <= max;
	},
	IsDate : function(op, formatString){
		formatString = formatString || "ymd";
		var m, year, month, day;
		switch(formatString){
			case "ymd" :
				m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
				if(m == null ) return false;
				day = m[6];
				month = m[5]--;
				year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
				break;
			case "dmy" :
				m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
				if(m == null ) return false;
				day = m[1];
				month = m[3]--;
				year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
				break;
			default :
				break;
		}
		if(!parseInt(month)) return false;
		month = month==12 ?0:month;
		var date = new Date(year, month, day);
        return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());
		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
	}
 }
</script>
分享到:
评论

相关推荐

    C#表单正则表达式验证手册

    《C#表单正则表达式验证手册》是一份详细阐述如何在C#环境中利用正则表达式进行表单验证的实用指南。手册的核心在于提供更灵活、更强大的验证方式,超越了Visual Studio (VS)内置控件的功能限制。通过学习这份手册,...

    javascript&正则表达式进行表单验证

    在JavaScript中,正则表达式常用于验证表单数据,如邮箱、电话号码、日期等格式的合法性。 表单验证通常有三种模式: 1. **实时验证**:用户输入时立即进行验证,如输入框失去焦点或输入长度达到预设值时。这种...

    正则表达式转换工具

    - 数据验证:在表单提交时,可以使用正则表达式验证输入格式,如邮箱、电话号码等。 - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以...

    使用正则表达式验证中文汉字输入

    在本主题中,“使用正则表达式验证中文汉字输入”着重讲解如何利用正则表达式来确保用户输入的数据仅包含合法的中文汉字。 首先,我们需要了解中文汉字在计算机中的表示方式。中文字符在Unicode编码中占据着一定的...

    使用正则表达式验证小写字母

    在提供的`083`文件中,可能包含了示例代码或更深入的正则表达式教程,建议你下载并研究,以加深对正则表达式验证小写字母的理解和应用。记住,实践是检验真理的唯一标准,多做练习,才能真正掌握这个强大的工具。

    validate校验正则表达式验证

    在本主题“validate校验正则表达式验证”中,我们主要探讨如何利用validate库进行正则表达式的校验工作,以及如何结合自定义的正则表达式进行数据验证。 validate库通常提供了一系列预定义的验证规则,其中包括对...

    正则表达式验证工具

    这时,正则表达式验证工具就显得尤为重要。 "正则表达式验证工具"是为了帮助开发者和用户检查正则表达式的正确性和有效性而设计的。这种工具通常具备以下功能: 1. **实时匹配**:用户输入正则表达式后,工具会...

    js表单输入正则表达式验证代码

    在JavaScript(JS)中,表单输入的正则表达式验证是确保用户输入符合特定格式或规则的关键技术。正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于匹配、查找、替换等字符串操作,尤其适用于数据...

    常用正则表达式HTML,JAVA合集

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、数据提取等IT领域。在这个“常用正则表达式HTML,JAVA合集”中,我们主要关注的是HTML和Java环境下的正则...

    mtracer2.0正则表达式验证工具

    **mtracer2.0正则表达式验证工具详解** 在信息技术领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于搜索、替换、提取或验证字符串模式。正则表达式广泛应用于数据验证、文本分析...

    源码(精通正则表达式&实战正则表达式)

    1. **数据验证**:在表单验证中,使用正则表达式检查邮箱、电话号码、日期格式等。 2. **文本处理**:从大量文本中提取特定信息,如网页爬虫抓取链接、解析HTML标签等。 3. **替换操作**:批量替换文本,如去除空白...

    JS正则表达式验证 常用的都有

    根据提供的文件信息,我们可以推断出此文档主要讨论的是JavaScript中的正则表达式验证方法以及一些其他相关的JavaScript功能。下面将详细介绍与标题“JS正则表达式验证 常用的都有”及描述中提到的知识点。 ### JS...

    正则表达式验证器,C#版

    - `Ex_From`可能是一个示例表单或测试用例,用于展示如何在实际应用中使用正则表达式验证器。 - `StuManger`可能是一个学生管理系统的部分代码,其中可能使用了正则表达式验证学生的相关信息,如学号、姓名或成绩...

    正则表达式判断表单验证

    在Web开发中,特别是在JavaScript中,正则表达式常用于表单验证,确保用户输入的数据符合预设的规则,提高用户体验并减少服务器端的压力。 **一、正则表达式基础** 1. **字符类**:如`[abc]`表示匹配a、b或c中的...

    正则表达式验证小工具

    本文将详细介绍正则表达式的概念、常用元字符、语法结构以及如何使用正则表达式验证工具进行匹配测试。 1. 正则表达式基础: - **基本元素**:正则表达式由基本字符和特殊字符(元字符)组成,如字母、数字、空格...

    JS的正则表达式进行验证

    在IT领域,特别是Web开发中,正则表达式(Regular Expression)是一种强大的文本处理工具,被广泛应用于数据验证、搜索和替换等场景。在JavaScript(JS)中,正则表达式同样发挥着不可或缺的作用,尤其是在用户输入...

    正则表达式验证工具,点击自动验证!

    在实际应用中,正则表达式验证工具可以用于各种场景,比如验证用户输入的邮箱、电话号码、身份证号的格式正确性,或者在网页表单提交前检查数据的有效性,防止因格式错误导致的数据丢失或错误。此外,开发者在编写...

    正则表达式测试工具

    正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,用于匹配、查找、替换、提取等操作。它在编程、数据处理和文本分析等领域中广泛应用。"正则表达式测试工具"是为了帮助开发者和用户更方便地...

    RegulatorTest邮箱的正则表达式验证

    在“RegulatorTest邮箱的正则表达式验证”这个主题中,我们主要探讨的是如何使用正则表达式来验证电子邮件地址的合法性。在实际应用中,如网页表单提交、数据验证等场景,确保用户输入的邮箱地址格式正确是非常关键...

    正则表达式工具The Regulator

    1. **数据验证**:在网页表单中,正则表达式常用于验证用户输入,确保数据格式正确,如邮箱、电话号码、邮政编码等。 2. **搜索与替换**:在文本编辑器或编程环境中,正则表达式可用于批量查找和替换特定模式的文本...

Global site tag (gtag.js) - Google Analytics