简明现代魔法 -> JavaScript -> 一些常用的 JavaScript 验证函数

一些常用的 JavaScript 验证函数

2010-03-02

做网站的时候,很多地方都是由表单提交组成的,但是有提交的地方都要有验证。客户端验证最简单的方法就是使用JS自定义函数。这个文档包含平时常用的28个验证函数,还有验证函数几种使用方法。

JS验证函数的调用方法需要注意以下几点:

  1. 给表单设置 onsubmit="return test()",配合<input type="submit" name="Submit" value="check"> 进行提交。
  2. <input type=text onkeydown="test();"> 当鼠标按下直接调用函数验证。
  3. <input type=text onblur="testl(this.value)"> 传入自己的值进行验证,test(this) 传入对象本身进行验证
  4. <input type="button" value="test" onclick="test()"> // 单击 Btn 进行验证,如果通过则用 document.forms[0].submit(); 进行表单提交
  5. <input onClick="return test();" type="submit" name="submit" value=" 提交信息 "> 使用 submit 进行提交验证,如果 test 中 return false; 则不提交返 true 提交。
  6. <script type="javascript">....function test(){...return false;...}...</script>
  7. ||与,&&或,!非
  8. 常用事件: onblur 失去焦点,onchange 失去焦点并且内容发生改变,onfocus 元素获得焦点,onreset 当表单中 RESET 的属性被激发时,onsubmit 表单被提交时触发此事件。
  9. 验证正则表达式:if(/^[1-9]\d*$/.test(str)) 返回真则通过,FALSE通不通过。
  10. document.getElementById("ip").value 访问ID的值,document.form1.text1.value 通过name访问
  11. <input onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')"> 执行单条正则验证例

验证函数的使用:<input type="text" name="text1" id="text1" onblur="test();" value="" />

字符长度限制

function test()
{
	if(document.form1.text1.value.length>50)
	{
		alert("不能超过50个字符!");
		document.form1.text1.focus();
		return false;
	}
}

只能是英文,字母或数字

function test()
{
	if(!(event.keyCode>=65&&event.keyCode<=90))
	{
		alert("只能是英文!");
		document.form1.text1.focus();
	}
}
<input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"> //字母或数字

只能是数字

function test()
{
	// 考虑小键盘上的数字键
    if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode <= 105))) 
	{
		alert("只能是数字!");	
		document.form1.text1.focus();
	}
}

或者使用以下方法:

function test(NUM)
{
	var i,j,strTemp;
	strTemp="0123456789";

	if ( NUM.length== 0)
 		return 0

	for (i=0; i<NUM.length; i++)
	{
		j=strTemp.indexOf(NUM.charAt(i));
		if (j==-1)
		{
			alert("只能是数字!");
			return false;
		}
	}
	//说明是数字
	return true;
}

验证邮箱(正则,函数)

function isEmail(strEmail) 
{
	if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	else
		alert("格式错误!");
}

function isEmail() 
{
	if (document.userinfo.useremail.value.charAt(0)=="." ||       
    	document.userinfo.useremail.value.charAt(0)=="@"||      
		document.userinfo.useremail.value.indexOf('@', 0) == -1 ||
		document.userinfo.useremail.value.indexOf('.', 0) == -1 ||
		document.userinfo.useremail.value.lastIndexOf("@")==document.userinfo.useremail.value.length-1 ||
		document.userinfo.useremail.value.lastIndexOf(".")==document.userinfo.useremail.value.length-1)
	{
		alert("Email地址格式不正确!");
		document.userinfo.useremail.focus();
		return false;
	}
}

<input type="text" onblur="isEmail(this.value);" name="text1" />

屏蔽关键字(这里屏蔽***和****)

function test() 
{
	if((document.form1.text1.value.indexOf ("***") == 0)||(document.form1.text1.value.indexOf ("****") == 0))
    {
		alert("存在关键字");
		document.form1.text1.focus();
		return false;
	}
}

比较两次输入是否相同

if(document.userinfo.userpassword.value != document.userinfo.userpassword1.value) 
{
	document.userinfo.userpassword.focus();
	document.userinfo.userpassword.value = '';
	document.userinfo.userpassword1.value = '';
	alert("两次输入的密码不同,请重新输入!");
	return false;
}

判断是否为空或空格组成

function test()
{
	if(checkspace(document.form1.text1.value)) 
    {
		document.form1.text1.focus();
		alert("为空或包含空格组成!");
		return false;
	}
}

function checkspace(checkstr) 
{
	var str = '';
	for(i = 0; i < checkstr.length; i++) 
    {
		str = str + ' ';
	}
	return (str == checkstr);
}

或者执行单条正则验证例:

<input onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')"> //执行单条正则验证例

验证是否是数字电话,只能是数字和-

正则:\d{3}-\d{8}|\d{4}-\d{7}

function istel(elem) 
{
	var str=elem.value;
	var oneDecimal=false;
	var oneChar=0;
	str=str.toString( );

	for (var i=0; i<str.length; i++) 
    {
		oneChar=str.charAt(i).charCodeAt(0);
		if(oneChar==45){ continue; }
		if(oneChar<48 || oneChar > 57) 
        {
			alert("此项只能输入数字和'-'号.");
			return false;
		}
	}
	return true;
}

或者

function fucCheckTEL(TEL)
{
	var i,j,strTemp;
	strTemp="0123456789-()# ";
	for (i=0; i<TEL.length; i++)
	{
		j=strTemp.indexOf(TEL.charAt(i));
		if (j==-1)
		{
			alert("此项只能输入数字和'-'号.");
			return false;
		}
	}
	//说明合法
	return true;
}

或者

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
	//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
	var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
	if (!patrn.exec(s)) return false
	return true
}

或者如果有以下要求:

  1. 电话号码由数字、"("、")"和"-"构成
  2. 电话号码为3到8位
  3. 如果电话号码中包含有区号,那么区号为三位或四位
  4. 区号用"("、")"或"-"和其他部分隔开
  5. 移动电话号码为11或12位,如果为12位,那么第一位为0
  6. 11位移动电话号码的第一位和第二位为"13"
  7. 12位移动电话号码的第二位和第三位为"13"

根据这几条规则,可以与出以下正则表达式:(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)

function PhoneCheck(s) 
{
	var str=s;
	var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
	alert(reg.test(str));
}

<input type="text" name="text1" onblur="istel(this);" />

当opt2为1时检查num是否是负数 当opt1为1时检查num是否是小数 返回1是正确的,0是错误的

function chknbr(num, opt1, opt2)
{
	var i=num.length;
	var staus;

	//staus用于记录.的个数
	status=0;
	if ((opt2!=1) && (num.charAt(0)=='-'))
	{
		alert("You have enter a invalid number.");
		return 0;
	}

	//当最后一位为.时出错
	if (num.charAt(i-1)=='.')
	{
		alert("You have enter a invalid number.");
		return 0;
	}

	for (j=0; j<i; j++)
	{
 		if (num.charAt(j)=='.')
		{
			status++;
		}

 		if (status>1)
		{
 			alert("You have enter a invalid number.");
 			return 0; 
		}
        
 		if (num.charAt(j)<'0' || num.charAt(j)>'9' )
 		{
  			if (((opt1==0) || (num.charAt(j)!='.')) && (j!=0))
			{
				alert("You have enter a invalid number.");
				return 0;
			}
		}
	}
	return 1;
}

检查是否数字或字母组成的串

function test(str)
{
	var strSource ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var ch;
	var i;
	var temp;
	for (i=0; i<=(str.length-1); i++)
	{ 
		ch = str.charAt(i);
		temp = strSource.indexOf(ch);
		if (temp==-1)
		{
			alert("格式不正确!");
			return false;
		}
	}
	
    if (strSource.indexOf(ch)==-1)
	{
		alert("格式不正确!");
		return false;
	}

	else
	{
		return true;
	}
}

数字验证

正整数验证^[1-9]\d*$,负整数验证^-[1-9]\d*$ ,整数^-?[1-9]\d*$,非负整数^[1-9]\d*|0$,非正正数^-[1-9]\d*|0$,浮点数^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

function test(str)
{
	if(/^[1-9]\d*$/.test(str))
	{
		alert("格式不能!");
		return false;	
	}
	else
	{
		return true;
	}
}

身份证

正则:\d{15}|\d{18}

IP地址

正则:\d+\.\d+\.\d+\.\d+

邮政编码

正则:[1-9]\d{5}(?!\d)

function isPostalCode(s)
{
	//var patrn=/^[a-zA-Z0-9]{3,12}$/;
	var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
	if (!patrn.exec(s)) return false
	return true
}

QQ号

正则:[1-9][0-9]{4,}

HTML标记

正则:\d{3}-\d{8}|\d{4}-\d{7}

是否有效的颜色值

function IsColor(color)
{
	var temp=color;
    if (temp=="") return true;
    if (temp.length!=7) return false;
    return (temp.search(/\\#[a-fA-F0-9]{6}/) != -1);
}

是否有效的链接

function IsURL(url)
{
	var sTemp;
	var b=true;
	sTemp=url.substring(0,7);
	sTemp=sTemp.toUpperCase();

    if ((sTemp!="HTTP://")||(url.length<10))
    {
		b=false;
	}

    return b;
}

是否有效的手机号码

function IsMobile(_str)
{
	var tmp_str = trim(_str);
	var pattern = /13\\d{9}/;

    return pattern.test(tmp_str);
}

或者

//校验手机号码:必须以数字开头,除数字外,可含有“-”
function IsMobile(s)
{
	var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
	if (!patrn.exec(s)) return false
	return true
}

IP地址和身份证号验证(正则)

function checkIP()
{
	obj=document.getElementById("ip").value

	//ip地址
	//var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;

	//身份证
	//var exp=/\b(((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])(\b|\.)){4}/
	//var exp=/^(\d{15}|\d{17}[x0-9])/
	//var exp=/^([\d]{15}|[\d]{18}|[\d]{17}[x|X])$/

	var reg = obj.match(exp);

	if(reg==null)
	{
		alert("IP地址不合法!");
	}
	else
	{
		alert("IP地址合法!");
	}
}

校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

function isRegisterUserName(s)
{
	var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
	if (!patrn.exec(s)) return false

	return true
}

校验用户姓名:只能输入1-30个以字母开头的字串

function isTrueName(s)
{
	var patrn=/^[a-zA-Z]{1,30}$/;

	if (!patrn.exec(s)) return false
	return true
}

校验密码:只能输入6-20个字母、数字、下划线

function isPasswd(s)
{
	var patrn=/^(\w){6,20}$/;
	if (!patrn.exec(s)) return false
	
    return true
}

日期时间类

短时间,形如 (13:04:06)

function isTime(str)
{
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) {alert('输入的参数不是时间格式'); return false;}
	if (a[1]>24 || a[3]>60 || a[4]>60)
	{
 		alert("时间格式不对");
		return false
	}
	return true;
}

短日期,形如 (2003-12-05)

function strDateTime(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 strDateTime(str)
{
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\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]);
}

判断字符全部由a-Z或者是A-Z的字字母组成

<input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"> 

判断字符由字母和数字,下划线,点号组成。且开头的只能是下划线和字母。

<input onblur="if(/^([a-zA-z_]{1})([\w]*)$/g.test(this.value))alert('有错')"> 

表单的值不能为空,不能超过imax字符,不能少于imix字符,输入为中文判断

function isNull(elem)
{
	//var pattern=/^\s+|\s+$/;
	if(elem.replace(/(^\s+|\s$)/g, "")=="")
    {
		return false;
	}
    else
    {
		return true;
	}
}

function imax(elem)
{
	if(elem.length>imax)
    {
		return false;
	}
    else
    {
		return true;
	}
}

function imix(elem)
{
	if(elem.length)
    {
     	return false;
	}
	else
    {
		return true;
	}
}

function isChinese(elem)
{
	var pattern=/[^\x00-\xff]/g;
	if(pattern.test(elem))
    {

		//包含中文
		return false;
	}
    else
    {

	//不包含中文
	return true;
	}
}
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们