js验证网址等Javascript常见验证代码合集

栏目: 编程语言 发布于: 2014-05-09 07:32:45

发一个利用js验证网址是否正确,email格式是否正确,是否为数字及数字的范围,密码或字符长度及是否相等及要求的最小字符串长度,输入是否为空等Javascript常见验证代码合集,用的上的朋友可以拿去了自行添加整理。

关键的JavaScript代码函数:

/** 
* 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息. 
* 
* @author www.phpernote.com 
* @version 1.0 
* @description 2012-05-16 
*/ 
var checkData=new function(){
var idExt="_phpernote_Span";//生成span层的id后缀 
/** 
* 得到中英文字符长(中文为2个字符) 
* 
* @param {}
* str 
* @return 字符长 
*/ 
this.length=function(str){
	var p1=new RegExp('%u..', 'g');
	var p2=new RegExp('%.', 'g');
	return escape(str).replace(p1, '').replace(p2, '').length;
}
/** 
* 删除对应id元素 
*/ 
this.remove=function(id){
	var idObject=document.getElementById(id);
	if(idObject != null) 
	idObject.parentNode.removeChild(idObject);
}
/** 
* 在对应id后面错误信息 
* 
* @param id:需要显示错误信息的id元素 
* str:显示错误信息 
*/ 
this.appendError=function(id, str){
	this.remove(id + idExt);// 如果span元素存在,则先删除此元素 
	var spanNew=document.createElement("span");// 创建span 
	spanNew.id=id + idExt;// 生成spanid 
	spanNew.style.color="red";
	spanNew.appendChild(document.createTextNode(str));// 给span添加内容 
	var inputId=document.getElementById(id);
	inputId.parentNode.insertBefore(spanNew, inputId.nextSibling);// 给需要添加元素后面添加span 
}
/** 
* @description 过滤所有空格字符。 
* @param str:需要去掉空间的原始字符串 
* @return 返回已经去掉空格的字符串 
*/ 
this.trimSpace=function(str){
	str+='';
	while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000')) 
	str=str.substring(1, str.length);
	while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000')) 
	str=str.substring(0, str.length - 1);
	return str;
}
/** 
* 过滤字符串开始部分的空格\字符串结束部分的空格\将文字中间多个相连的空格变为一个空格 
* 
* @param {Object}
* inputString 
*/ 
this.trim=function(inputString){
	if(typeof inputString != "string"){
		return inputString;
	}
	var retValue=inputString;
	var ch=retValue.substring(0, 1);
	while (ch == " "){
		// 检查字符串开始部分的空格 
		retValue=retValue.substring(1, retValue.length);
		ch=retValue.substring(0, 1);
	}
	ch=retValue.substring(retValue.length - 1, retValue.length);
	while (ch == " "){
		// 检查字符串结束部分的空格 
		retValue=retValue.substring(0, retValue.length - 1);
		ch=retValue.substring(retValue.length - 1, retValue.length);
	}
	while (retValue.indexOf(" ") != -1){
		// 将文字中间多个相连的空格变为一个空格 
		retValue=retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length);
	}
	return retValue;
}
/** 
* 过滤字符串,指定过滤内容,如果内容为空,则默认过滤 '~!@#$%^&*()-+." 
* 
* @param {Object}
* str 
* @param {Object}
* filterStr 
* 
* @return 包含过滤内容,返回True,否则返回false;
*/ 
this.filterStr=function(str, filterString){
	filterString=filterString == "" ? "'~!@#$%^&*()-+.\"" : filterString;
	var ch;
	var i;
	var temp;
	var error=false;// 当包含非法字符时,返回True 
	for (i=0;i <= (filterString.length - 1);i++){
		ch=filterString.charAt(i);
		temp=str.indexOf(ch);
		if(temp != -1){
			error=true;
			break;
		}
	}
	return error;
}
this.filterStrSpan=function(id, filterString){
	filterString=filterString == "" ? "'~!@#$%^&*()-+.\"" : filterString;
	var val=document.getElementById(id);
	if(this.filterStr(val.value, filterString)){
		val.select();
		var str="不能包含非法字符" + filterString;
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查是否为网址 
* 
* @param {}
* str_url 
* @return {Boolean}true:是网址,false:<b>不是</b>网址;
*/ 
this.isURL=function(str_url) {// 验证url 
	var strRegex="^((https|http|ftp|rtsp|mms)?://)" 
	+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@ 
	+ "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 
	+ "|" // 允许IP和DOMAIN(域名) 
	+ "([0-9a-z_!~*'()-]+\.)*" // 域名- www. 
	+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名 
	+ "[a-z]{2,6})" // first level domain- .com or .museum 
	+ "(:[0-9]{1,4})?" // 端口- :80 
	+ "((/?)|" // a slash isn't required if there is no file name 
	+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
	var re=new RegExp(strRegex);
	return re.test(str_url);
}
this.isURLSpan=function(id){
	var val=document.getElementById(id);
	if(!this.isURL(val.value)){
		val.select();
		var str="链接不符合格式;";
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查是否为电子邮件 
* 
* @param {}
* str 
* @return {Boolean}true:电子邮件,false:<b>不是</b>电子邮件;
*/ 
this.isEmail=function(str){
	var re=/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
	return re.test(str);
}
this.isEmailSpan=function(id){
	var val=document.getElementById(id);
	if(!this.isEmail(val.value)){
		val.select();
		var str="邮件不符合格式;";
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查是否为数字 
* 
* @param {}
* str 
* @return {Boolean}true:数字,false:<b>不是</b>数字;
*/ 
this.isNum=function(str){
	var re=/^[\d]+$/;
	return re.test(str);
}
this.isNumSpan=function(id){
	var val=document.getElementById(id);
	if(!this.isNum(val.value)){
		val.select();
		var str="必须是数字;";
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查数值是否在给定范围以内,为空,不做检查<br> 
* 
* @param {}
* str_num 
* @param {}
* small 应该大于或者等于的数值(此值为空时,只检查不能大于最大值) 
* @param {}
* big 应该小于或者等于的数值(此值为空时,只检查不能小于最小值) 
* 
* @return {Boolean}<b>小于最小数值或者大于最大数值</b>数字返回false 否则返回true;
*/ 
this.isRangeNum=function(str_num, small, big){
	if(!this.isNum(str_num)) // 检查是否为数字 
	return false;
	if(small == "" && big == "") 
	throw str_num + "没有定义最大,最小值数字!";
	if(small != ""){
		if(str_num < small) 
		return false;
	}
	if(big != ""){
		if(str_num > big) 
		return false;
	}
	return true;
}
this.isRangeNumSpan=function(id, small, big){
	var val=document.getElementById(id);
	if(!this.isRangeNum(val.value, small, big)){
		val.select();
		var str="";
		if(small != ""){
			str="应该大于或者等于 " + small;
		}
		if(big != ""){
			str+=" 应该小于或者等于 " + big;
		}
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查是否为合格字符串(不区分大小写)<br> 
* 是由a-z0-9_组成的字符串 
* 
* @param {}
* str 检查的字符串 
* @param {}
* idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean}<b>不是</b>"a-z0-9_"组成返回false,否则返回true;
*/ 
this.isLicit=function(str){
	var re=/^[_0-9a-zA-Z]*$/;
	return re.test(str);
}
this.isLicitSpan=function(id){
	var val=document.getElementById(id);
	if(!this.isLicit(val.value)){
		val.select();
		var str="是由a-z0-9_组成的字符串(不区分大小写);";
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查二个字符串是否相等 
* 
* @param {}
* str1 第一个字符串 
* @param {}
* str2 第二个字符串 
* @return {Boolean}字符串不相等返回false,否则返回true;
*/ 
this.isEquals=function(str1, str2){
	return str1 == str2;
}
this.isEqualsSpan=function(id, id1){
	var val=document.getElementById(id);
	var val1=document.getElementById(id1);
	if(!this.isEquals(val.value, val1.value)){
		val.select();
		var str="二次输入内容必须一样;";
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查字符串是否在给定长度范围以内(中文字符以2个字节计算),字符为空,不做检查<br> 
* 
* @param {}
* str 检查的字符 
* @param {}
* lessLen 应该大于或者等于的长度 
* @param {}
* moreLen 应该小于或者等于的长度 
* 
* @return {Boolean}<b>小于最小长度或者大于最大长度</b>数字返回false;
*/ 
this.isRange=function(str, lessLen, moreLen){
	var strLen=this.length(str);
	if(lessLen != ""){
	if(strLen < lessLen) 
		return false;
	}
	if(moreLen != ""){
		if(strLen > moreLen) 
		return false;
	}
	if(lessLen == "" && moreLen == "") 
	throw "没有定义最大最小长度!";
	return true;
}
this.isRangeSpan=function(id, lessLen, moreLen){
	var val=document.getElementById(id);
	if(!this.isRange(val.value, lessLen, moreLen)){
		var str="长度";
		if(lessLen != "") 
			str+="大于或者等于 " + lessLen + ";";
		if(moreLen != "") 
			str+=" 应该小于或者等于 " + moreLen;
		val.select();
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br> 
* 
* @param {}
* str 字符串 
* @param {}
* lessLen 小于或等于长度 
* 
* @return {Boolean}<b>小于给定长度</b>数字返回false;
*/ 
this.isLess=function(str, lessLen){
	return this.isRange(str, lessLen, "");
}
this.isLessSpan=function(id, lessLen){
	var val=document.getElementById(id);
	if(!this.isLess(val.value, lessLen)){
		var str="长度大于或者等于 " + lessLen;
		val.select();
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查字符串是否大于给定长度范围(中文字符以2个字节计算)<br> 
* 
* @param {}
* str 字符串 
* @param {}
* moreLen 小于或等于长度 
* 
* @return {Boolean}<b>大于给定长度</b>数字返回false;
*/ 
this.isMore=function(str, moreLen){
	return this.isRange(str, '', moreLen);
}
this.isMoreSpan=function(id, moreLen){
	var val=document.getElementById(id);
	if(!this.isMore(val.value, moreLen)){
		var str="长度应该小于或者等于 " + moreLen;
		val.select();
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
}
/** 
* 检查字符不为空 
* 
* @param {}
* str 
* @return {Boolean}<b>字符为空</b>返回true,否则为false;
*/ 
this.isEmpty=function(str){
	return str == '';
}
this.isEmptySpan=function(id){
	var val=document.getElementById(id);
	if(this.isEmpty(val.value)){
		var str="不允许为空;";
		val.select();
		this.appendError(id, str);
		return false;
	}else{
		this.remove(id + idExt);
		return true;
	}
	}
}

具体使用方法见下面案例:

<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js验证网址,js验证email,js验证数字,js验证密码,js验证字符长度及是否相等,js验证数字范围,js验证是否为空等Javascript验证代码合集(www.phpernote.com)</title> 
<script type="text/javascript" src="function.js"></script> 
<script type="text/javascript"> 
function checkForm(){ 
var isPass = true; 
//过滤字符串 
if(!(checkData.isEmptySpan("filterStr") && checkData.filterStrSpan('filterStr','#$%$'))) { 
isPass = false; 
} 
//检查url 
if(!(checkData.isEmptySpan("isURL") && checkData.isURLSpan('isURL'))) 
isPass = false; 
//email 
if(!(checkData.isEmptySpan("isEmail") && checkData.isEmailSpan('isEmail'))) 
isPass = false; 
//数字 
if(!(checkData.isNumSpan('isNum'))) 
isPass = false; 
//数字大小 
if(!(checkData.isEmptySpan("isRangeNum") && checkData.isNumSpan('isRangeNum') && checkData.isRangeNumSpan('isRangeNum',10,100))) 
isPass = false; 
//密码 (数字,字母,下划线) 
if(!(checkData.isLicitSpan('isLicit'))) 
isPass = false; 
//二个字段是否相等 
if(!(checkData.isEmptySpan("isEquals") && checkData.isEqualsSpan('isEquals','isEquals1'))) 
isPass = false; 
//字符长度控制 
if(!(checkData.isRangeSpan('isRange',5,10))) 
isPass = false; 
//字符最短控制 
if(!(checkData.isLessSpan('isLess',10))) 
isPass = false; 
//字符最长控制 
if(!(checkData.isEmptySpan("isMore") && checkData.isMoreSpan('isMore',30))) 
isPass = false; 
//为空控制 
if(!(checkData.isEmptySpan("isEmpty"))) 
isPass = false; 
return isPass; 
} 
</script> 
</head> 
<body> 
<form action="index.jsp" method="post" onsubmit="return checkForm();"> 
<table> 
<tbody> 
<tr> 
<td>字符过滤:<input type="text" id="filterStr" name="filterStr"></td> 
<td>链接:<input type="text" id="isURL" name="isURL"></td> 
</tr> 
<tr> 
<td>邮件:<input type="text" id="isEmail" name="isEmail"></td> 
<td>数字:<input type="text" id="isNum" name="isNum"></td> 
</tr> 
<tr> 
<td>数字范围:<input type="text" id="isRangeNum" name="isRangeNum"></td> 
<td>a-zA-Z0-9_<input type="text" id="isLicit" name="isLicit"></td> 
</tr> 
<tr> 
<td>判断相等:<input type="text" id="isEquals" name="isEquals"></td> 
<td><input type="text" id="isEquals1" name="isEquals1"></td> 
</tr> 
<tr> 
<td>长度控制:<input type="text" id="isRange" name="isRange"></td> 
<td>长度大于控制:<input type="text" id="isLess" name="isLess"></td> 
</tr> 
<tr> 
<td>长度小于控制:<input type="text" id="isMore" name="isMore"></td> 
<td>是否为空:<input type="text" id="isEmpty" name="isEmpty"></td> 
</tr> 
<tr> 
<td><input type="submit" name="submit" value="提交数据"></td> 
</tr> 
</tbody> 
</table> 
</form> 
</body> 
</html>

您可能感兴趣的文章

  • 兼容IE和firefox的设置首页和加入收藏的JavaScript代码
  • Javascript检测用户输入密码强度的效果代码
  • 禁止网页右键、复制、另存为、查看源文件等功能实现网页源代码保护
  • 网页缓存控制 Cache-control 常见的取值有private、no-cache、max-age、must-revalidate 介绍
  • Javascript将内容分享到各大社交平台网站的代码总结
  • 禁止Js(Javascript)脚本错误提示
  • javascript判断鼠标左右键点击-兼容ie、firefox、chrome等各大主流浏览器
  • Js 验证手机号码函数(采自丁丁地图)
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。
转载请注明:文章转载自 [http://www.php230.com]
本文标题:js验证网址等Javascript常见验证代码合集
IT技术书籍推荐:
Python黑帽子:黑客与渗透测试编程之道
Python黑帽子:黑客与渗透测试编程之道
塞茨 (Justin Seitz) (作者), 孙松柏 (译者), 李聪 (译者), 润秋 (译者)
本书是畅销书《Python 灰帽子—黑客与逆向工程师的 Python 编程之道》的姊妹篇,那本书一面市便占据计算机安全类书籍的头把交椅。本书由 Immunity 公司的高级安全研究员 Justin Seitz 精心撰写。作者根据自己在安全界,特别是渗透测试领域的几十年经验,向读者介绍了 Python 如何被用在黑客和渗透测试的各个领域,从基本的网络扫描到数据包捕获,从 Web 爬虫到编写 Burp 扩展工具,从编写木马到权限提升等。 作者在本书中的很多实例都非常具有创新和启发意义, 如 HTTP 数据中的图片检测、 基于 GitHub命令进行控制的模块化木马、浏览器的中间人攻击技术、利用 COM 组件自动化技术窃取数据、通过进程监视和代码插入实现权限提升、通过向虚拟机内存快照中插入 shellcode 实现木马驻留和权限提升等。通过对这些技术的学习,读者不仅能掌握各种 Python 库的应用和编程技术,还能拓宽视野,培养和锻炼自己的黑客思维。读者在阅读本书时也完全感觉不到其他一些技术书籍常见的枯燥和乏味。
最新互联网资讯