最近需要用到用戶注冊信息的表單驗證,然后就查了好些資料,下面就給大家分享一下經常會用到的一些,JS表單驗證函數,希望對大家有用。
//郵件校驗

1 //郵件校驗 2 //通過校驗返回ture,否則返回false 3 function isEmail(emailStr) { 4 if (emailStr.length == 0) { 5 return fasle; 6 } else { 7 var emailPat=/^(.+)@(.+)$/; 8 var specialChars="/(/)<>@,;:///"/./[/]"; 9 var validChars="[^/s" + specialChars + "]"; 10 var quotedUser="("[^"]*")"; 11 var ipDomainPat=/^(d{1,3})[.](d{1,3})[.](d{1,3})[.](d{1,3})$/; 12 var atom=validChars + '+'; 13 var word="(" + atom + "|" + quotedUser + ")"; 14 var userPat=new RegExp("^" + word + "(/." + word + ")*$"); 15 var domainPat=new RegExp("^" + atom + "(/." + atom + ")*$"); 16 var matchArray=emailStr.match(emailPat); 17 if (matchArray == null) { 18 return false; 19 } 20 var user=matchArray[1]; 21 var domain=matchArray[2]; 22 if (user.match(userPat) == null) { 23 return false; 24 } 25 var IPArray = domain.match(ipDomainPat); 26 if (IPArray != null) { 27 for (var i = 1; i <= 4; i++) { 28 if (IPArray[i] > 255) { 29 return false; 30 } 31 } 32 return true; 33 } 34 var domainArray=domain.match(domainPat); 35 if (domainArray == null) { 36 return false; 37 } 38 var atomPat=new RegExp(atom,"g"); 39 var domArr=domain.match(atomPat); 40 var len=domArr.length; 41 if ((domArr[domArr.length-1].length < 2) || 42 (domArr[domArr.length-1].length > 3)) { 43 return false; 44 } 45 if (len < 2) { 46 return false; 47 } 48 return true; 49 } 50 } 51
////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; for(var i=0;i<17;i++){ ssum=eval(Wi[i]*id.charAt(i)); sum=ssum+sum; } var modNum=sum%11; if(ai.charAt(modNum)==id.charAt(17)){ return true; } }
//純英文驗證輸入,判斷是否為英文,正確返回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++){ 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-5-23)

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.getElementById(name); objSubmit.focus; } else { return true; } }
//判斷是否為浮點數,正確返回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++) { 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++) { 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++){ //測試一個字符並判斷一共有多少種模式. 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) }