1. 程式人生 > >常用的js驗證函式 (轉載)

常用的js驗證函式 (轉載)

//******************************************************************
/**//*
*JavaScript Document
* <p>タイトル: JS常用処理函式</p>
* <p>説明: JS常用処理函式</p>
* <p>著作権: Copyright (c) 2007-4-30</p>
* <p>會社: 杭州恆生電子株式會社</p>
* @擔當者: 林顔雙
* @version 1.0
* 由於本人日語能力有限及時間倉促沒有寫日文註釋中文部門可能會出現亂碼現象
* 在GB2312編碼格式下可正常顯示此文件,程式碼編寫過程難免有錯誤,錯誤之處歡迎指正
*
******函式説明******
*  
* isEmail(emailStr) //郵件校驗,通過校驗返回ture,否則返回false
* isIp(strIp) //IP地址校驗,輸入正確的IP地址返回ture,否則返回false
* isTelphoneNum(telNum) //電話號碼校驗,正確的電話號碼(如0571-1234567[8] 010-1234567[8] )則返回ture,否則返回false
* isMobilephoneNum(mobileNum) //手機號碼校驗,正確的手機號碼(如:13800571506 013800571505)則返回ture,否則返回false
* isDigital(str) //純數字驗證輸入,輸入為純數字則返回ture,否則返回false
* card(id) //18位身份證驗證,輸入正確的號碼返回ture,否則返回false
* matchPattern(value,mask) //自定義規則,mask為正確的正則表示式,返回通過自定義驗證的字串
* isEnglish(name) //判斷是否為英文,正確返回ture,否則返回false
* isChinese(name) //判斷是否為中文,正確返回 ture,否則返回false
* contain(str,charset) //非法字元判斷,str中有charset則返回ture,
* testSelect() //選中文字框或文字域文字,在input位置加上 onClick/onFocus="textSelect();" 即可
* textOnly() //只允許輸入數字 字母 下劃線,在input位置加上 onkeypress="textOnly()" 即可
* isURL(URL) //判斷URL,正確的URL返回true,否則返回false
* isDate(date) //判斷是否為短日期(如:2003-(/)12-(/)05),正確返回,否則返回false
* isTime(time) //判斷是否為短時間(如:HH:MM:SS)
* enterToTab() //在表單元素中除button外,按回車鍵模擬TAB功能
* enterTOSubmit(name) //在填寫表單時按回車鍵提交表單,name為sumbit控制元件名
* isFloat(float,index) //判斷是否為浮點數,並且小數點後面為index位,正確返回true
* trimFullSpace(strIn) //返回去前後全形半形空格後的字串
* //校驗密碼複雜度,密碼由數字,大小寫字母,特殊字元中的任意三種組合,通過則返回true
* checkPassWord(passWord,maxLen) //由三個函式組成checkPassWord(),charMode(),bitTotal()
* maxLength(strin,maxLen) //判斷字元最大長度,如果strin的長度不大於maxLen返回tur
* minLength(strin,minLen) //判斷字元最小長度,如果的長度不小於minLen返回ture
* isAccount(str) //判斷使用者名稱合法性(字母 數字式下劃先組成且只能以字母開頭,且長度最小為6位),合法返回true,否則返回false
* getChineseNum(obstring) //取得字串中中文字的個數
* isInteger(str) //判斷輸入的字元是否為Integer型別,是則返回true,否則返回false
* isDouble(str) //判斷輸入的字元是否為Double型別,是則返回true,否則返回false
*/
//*******************************************************************


//郵件校驗
//通過校驗返回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(Wi[i]*id.charAt(i));
sum=ssum+sum;
}
var modNum=sum%11;
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++)...{
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.getElementById(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++)
{
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)
}

//判斷輸入的字元是否為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;
}
}