分享

正则表达式验证大全

 昵称16828778 2014-04-17

表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。

本人写了一些CheckList 对于一些常用的校验几乎都有,已经写成函数,大家用的时候只要直接调用即可.

代码如下:

欢迎转载但请保留版权

/

//*******************************************************************

//邮件校验

//通过校验返回ture,否则返回false

function isEmail(emailStr) ...{

if (emailStr.length == 0) ...{

return fasle;     

} else ...{

var emailPat=/^(.+)@(.+)$/;

var specialChars="\(\)<>@,;:\\\"\.\[\]";

var validChars="[^\s" + specialChars + "]";

var quotedUser="("[^"]*")";

var ipDomainPat=/^(d...{1,3})[.](d...{1,3})[.](d...{1,3})[.](d...{1,3})$/;

var atom=validChars + '+';

var word="(" + atom + "|" + quotedUser + ")";

var userPat=new RegExp("^" + word + "(\." + word + ")*$");

var domainPat=new RegExp("^" + atom + "(\." + atom + ")*$");

var matchArray=emailStr.match(emailPat);

if (matchArray == null) ...{

return false;   

}

var user=matchArray[1];

var domain=matchArray[2];

if (user.match(userPat) == null) ...{

return false;

}

var IPArray = domain.match(ipDomainPat);

if (IPArray != null) ...{

for (var i = 1; i <= 4; i++) ...{

if (IPArray[i] > 255) ...{

return false;

}

}

return true;

}

var domainArray=domain.match(domainPat);

if (domainArray == null) ...{

return false;

}

var atomPat=new RegExp(atom,"g");

var domArr=domain.match(atomPat);

var len=domArr.length;

if ((domArr[domArr.length-1].length < 2) ||

(domArr[domArr.length-1].length > 3)) ...{

return false;

}

if (len < 2) ...{

return false;   

}

return true;

}      

}

//IP地址校验

//正确的IP地址回ture,否则返回false    

function isIp(strIp) ...{

var ipDomainPat=/^((2[0-4]d|25[0-5]|[01]?dd?).)...{3}(2[0-4]d|25[0-5]|[01]?dd?)$/;

var matchArray=strIp.match(ipDomainPat); 

if(matchArray!=null)...{

return true;

}              

}

//电话号码校验

//正确的电话号码(包括区号和“-”如0571-1234567[8] 010-1234567[8] )则返回ture,否则返回false

function isTelphoneNum(telNum)...{

var telphoneNumPat=/^0d...{2}-d...{7,8}|0d...{3}-d...{7,8}$/;

var matchArray=telNum.match(telphoneNumPat);

if(matchArray!=null)...{

return true;

}

}

//手机号码校验

//正确的手机号码(如:13800571506 013800571505)则返回ture,否则返回false

function isMobilephoneNum(mobileNum)...{

var mobilephoneNumPat=/^1d...{10}|01d...{10}$/;

var matchArray=mobileNum.match(mobilephoneNumPat);

if(matchArray!=null)...{

return true;

}

//纯数字验证输入,输入为纯数字则返回ture,否则返回false

function isDigital(str)...{

var digitalPot=/^d*$/;

var matchArray=str.match(digitalPot);

if(matchArray!=null)...{

return true;

}

}

//18位身份证验证,输入正确的号码返回ture,否则返回false 

function card(id)...{

var Wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);

var ai="10X98765432";

var sum=0

var ssum=0; 

//alert(id.charAt(i));

for(var i=0;i<17;i++)...{

ssum=eval_r(Wi[i]*id.charAt(i));

sum=ssum+sum;

}   

var modNum=sum;

if(ai.charAt(modNum)==id.charAt(17))...{

return true;      

}

}

//自定义规则,mask为正确的正则表达式

//返回通过自定义验证的字符串 

function matchPattern(value,mask) ...{ 

return mask.exec(value);

}

//判断是否为英文,正确返回ture,否则返回false

function isEnglish(name) ...{

if(name.length == 0)

return false;

for(i = 0; i < name.length; i++) ...{

if(name.charCodeAt(i) > 128)

return false;

}

return true;

}

//判断是否为中文,正确返回 ture,否则返回false

function isChinese(name)

...{

if(name.length == 0)

return false;

for(i = 0; i < name.length; i++) ...{

if(name.charCodeAt(i) > 128)

return true;

}

return false;

}

//非法字符判断,str中有charset则返回ture,

function contain(str,charset)...{

var i;

for(i=0;i<charset.length;i++)...{< p="">

if(str.indexOf(charset.charAt(i))>=0)...{

return true;

}

return false;

}

}

//选中文本框或文本域文本,在input位置加上 onClick/onFocus="textSelect();" 即可 

function textSelect() ...{

var obj = document.activeElement;

if(obj.tagName == "TEXTAREA")

...{

obj.select();

}

if(obj.tagName == "INPUT" )   ...{

if(obj.type == "text")

obj.select();

}

}

//只允许输入数字 字母 下划线

function textOnly()...{

var i= window.event.keyCode ;

//8=backspace

//9=tab

//37=left arrow

//39=right arrow

//46=delete

//48~57=0~9

//97~122=a~z

//65~90=A~Z

//95=_

if (!((i<=57 && i>=48)||(i>=97 && i<=122)||(i>=65 && i<=90)||(i==95)||(i==8)||(i==9)||(i==37)||(i==39)||(i==46)))...{

//window.event.keyCode=27;

event.returnValue=false;

return false;

} else ...{

//window.event.keyCode=keycode;

return true;

}

//判断URL,正确的URL返回true,否则返回false 

function isURL(URL)...{

var urlPat=/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*([^<>""])*$/;

var matchArray=URL.match(urlPat);

if(matchArray!=null){

return true;

} else {

return false;

}   

}

//判断短日期(如2003-12-05)

function isDate(date){

var r = date.match(/^(d{1,4})(-|/)(d{1,2})(d{1,2})$/);

if(r==null){  

return false;

}

if (r[1]<1 || r[3]<1 || r[3]-1>12 || r[4]<1 || r[4]>31) {  

return false

}

var d= new Date(r[1], r[3]-1, r[4]);

if(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]){

return true;

}

}

//判断短时间(HH:MM:SS)

function isTime(time){

var a = time.match(/^(d{1,2})(:)?(d{1,2})(d{1,2})$/);

if (a == null)

{

return false;

}

if (a[1]>23 || a[1]<0 || a[3]>60 || a[3]<0 || a[4]>60 || a[4]<0){

return false

}

return true;

}

//在表单元素中除button外,按回车键模拟TAB功能

function enterToTab(){

if (window.event.keyCode == 13 && window.event.ctrlKey == false && window.event.altKey == false){

if (window.event.srcElement.type != "button")

window.event.keyCode = 9;

} else {

return true;

}

}

//在填写表单时按回车键提交表单,name为sumbit控件名

function enterTOSubmit(name) {

if (window.event.keyCode == 13 && window.event.ctrlKey == false && window.event.altKey == false){

var objSubmit=document.getElementByIdx_x(name);

objSubmit.focus; 

} else {

return true;

}

//返回去前后全角半角空格后的字符串

function trimFullSpace(strIn) {

if (strIn == null){

return null;

} else {

var len = strIn.length;

var start = 0;

var end = strIn.length;

for (var i = 0; i < len; i++){  

if (strIn.charAt(i) == ' ' || strIn.charAt(i) == ' '){

start++;    

} else {

break;

}

for (var i = len - 1; i > -1; i--){

if (strIn.charAt(i) == ' '|| strIn.charAt(i) == ' '){

end--;

} else {

break;

}   

}

if (start >= end){

return "";

} else {

return strIn.substring(start, end);

}

}

}

//判断是否为浮点数,并且小数点后面为index位,正确返回true 

function isFloat(float,index){

var floatPat=/^(d{1,})[.](d{1,})$/;

var matchArray=float.match(floatPat);

if(matchArray!=null) {

if(matchArray[2].length==index){  

return true;

}

}    

}

//判断字符最大长度,如果strin的长度不大于maxLen返回ture 

function maxLength(strin,maxLen) {  

var len=0;

for(var i=0;i<strin.length;i++)< p="">

{

if(strin.charCodeAt(i)>256)

{

len += 2;

} else {

len++;

}

}

if(len<=maxLen){

return true;

}

}

//判断字符最小长度,如果的长度不小于minLen返回ture

function minLength(strin,minLen) {  

var len=0;

for(var i=0;i<strin.length;i++)< p="">

{

if(strin.charCodeAt(i)>256)

{

len += 2;

} else {

len++;

}

}

if(len>=maxLen){

return true;

}

}

//由三个函数组成checkPassWord(),charMode(),bitTotal()

//校验密码复杂度,密码由数字,大小写字母,特殊字符中的任意三种组合,通过则返回true 

function checkPassWord(passWord,maxLen){ 

if (passWord.length<=maxLen) 

return false; //密码太短 

Modes=0; 

for (i=0;i<password.length;i++){ < p="">

//测试一个字符并判断一共有多少种模式. 

Modes|=charMode(passWord.charCodeAt(i)); 

}

return bitTotal(Modes); 

}

//CharMode函数 

//判断某个字符是属于哪一种类型. 

function charMode(iN){ 

if (iN>=48 && iN <=57) //数字 

return 1; 

if (iN>=65 && iN <=90) //大写字母 

return 2; 

if (iN>=97 && iN <=122) //小写 

return 4; 

else 

return 8; //特殊字符 

//bitTotal函数 

//计算出当前密码当中一共有多少种模式 

function bitTotal(num){ 

modes=0; 

for (i=0;i<4;i++){ 

if (num & 1) modes++;   

num>>>=1;   

}   

if(modes==3){

return true

}

//判断是否为合法的用户名,合法返回true,否则返回flase

//用户名由字母和数字、下划线组成,且只能以字母开头,且长度最小为6位

function isAccount(str){

if(/^[a-z]w{3,}$/i.test(str))    

{

return true;

} else {

return false; 

]

}

//取得字符串中中文字的个数

function getChineseNum(obstring){

var pattern = /^[一-龥]+$/i;

var maxL,minL;

maxL = obstring.length;

obstring = obstring.replace(pattern,"");

minL = obstring.length;

return (maxL - minL)

}

//判断输入的字符是否为Integer类型,是返回true,否则返回false

function isInteger(str){

var integerPat=/^[-+]?d+$/;

var matchArray=str.match(integerPat);

if(matchArray!=null){

return true;

} else {

return false;

}  

}

//判断输入的字符是否为Double类型,是返回true,否则返回false 

function isDouble(str){

var doublePat=/^[-+]?d+(.d+)?$/;

var matchArray=str.match(doublePat);

if(matchArray!=null){

return true;

} else {

return false;

}  

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多