Processing math: 100%

常用JS验证函数总结

简介: 随着做项目数量的越来越越多,其中用到js的地方很多相同,这里自己整理了一些常用表单验证的js方法,虽然和其他js验证框架有一定的差距,但是毕竟是自己总结的一些东西,在此与纪录分享一下。JS验证/** * 2010-7-13 * 贺  臣 * 情  缘 * js各种表单数据验证 *//****...

随着做项目数量的越来越越多,其中用到js的地方很多相同,这里自己整理了一些常用表单验证的js方法,虽然和其他js验证框架有一定的差距,但是毕竟是自己总结的一些东西,在此与纪录分享一下。

img_405b18b4b6584ae338e0f6ecaf736533.gif JS验证
/* *
 * 2010-7-13
 * 贺  臣
 * 情  缘
 * js各种表单数据验证
 
*/
/* ************************************************************************************ */
/* ************************************数字的验证**************************************** */
/* ************************************************************************************ */

/* *
 * 检查输入的一串字符是否全部是数字
 * 输入:str  字符串
 * 返回:true 或 flase; true表示为数字
 
*/
function  checkNum(str){
    
return  str.match( / \D / ==   null ;
}


/* *
 * 检查输入的一串字符是否为小数
 * 输入:str  字符串
 * 返回:true 或 flase; true表示为小数
 
*/
function  checkDecimal(str){
    
if  (str.match( / ^-?\d+(\.\d+)?$ / g)  ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查输入的一串字符是否为整型数据
 * 输入:str  字符串
 * 返回:true 或 flase; true表示为小数
 
*/
function  checkInteger(str){
    
if  (str.match( / ^[-+]?\d*$ / ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* ************************************************************************************ */
/* ************************************字符的验证**************************************** */
/* ************************************************************************************ */


/* *
 * 检查输入的一串字符是否是字符
 * 输入:str  字符串
 * 返回:true 或 flase; true表示为全部为字符 不包含汉字
 
*/
function  checkStr(str){
    
if  ( / [^\x00-\xff] / g.test(str)) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}


/* *
 * 检查输入的一串字符是否包含汉字
 * 输入:str  字符串
 * 返回:true 或 flase; true表示包含汉字
 
*/
function  checkChinese(str){
    
if  (escape(str).indexOf( " %u " !=   - 1 ) {
        
return   true ;
    }
    
else  {
        
return   false ;
    }
}


/* *
 * 检查输入的邮箱格式是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 
*/
function  checkEmail(str){
    
if  (str.match( / [A-Za-z0-9_-]+[@](\S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*) / g)  ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}


/* *
 * 检查输入的手机号码格式是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 
*/
function  checkMobilePhone(str){
    
if  (str.match( / ^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$ / ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}


/* *
 * 检查输入的固定电话号码是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 
*/
function  checkTelephone(str){
    
if  (str.match( / ^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$ / ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查QQ的格式是否正确
 * 输入:str  字符串
 *  返回:true 或 flase; true表示格式正确
 
*/
function  checkQQ(str){
    
if  (str.match( / ^\d{5,10}$ / ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查输入的身份证号是否正确
 * 输入:str  字符串
 *  返回:true 或 flase; true表示格式正确
 
*/
function  checkCard(str){
    
// 15位数身份证正则表达式
     var  arg1  =   / ^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$ / ;
    
// 18位数身份证正则表达式
     var  arg2  =   / ^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$ / ;
    
if  (str.match(arg1)  ==   null   &&  str.match(arg2)  ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查输入的IP地址是否正确
 * 输入:str  字符串
 *  返回:true 或 flase; true表示格式正确
 
*/
function  checkIP(str){
    
var  arg  =   / ^(\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])$ / ;
    
if  (str.match(arg)  ==   null ) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查输入的URL地址是否正确
 * 输入:str  字符串
 *  返回:true 或 flase; true表示格式正确
 
*/
function  checkURL(str){
    
if  (str.match( / (http[s]?|ftp):\ / \ / [^\ / \.] +? \.. + \w$ / i) == null) {
         return   false
    }
    
else  {
        
return   true ;
    }
}

/* *
 * 检查输入的字符是否具有特殊字符
 * 输入:str  字符串
 * 返回:true 或 flase; true表示包含特殊字符
 * 主要用于注册信息的时候验证
 
*/
function  checkQuote(str){
    
var  items  =   new  Array( " ~ " " ` " " ! " " @ " " # " " $ " " % " " ^ " " & " " * " " { " " } " " [ " " ] " " ( " " ) " );
    items.push(
" : " " ; " " ' " " | " " \\ " " < " " > " " ? " " / " " << " " >> " " || " " // " );
    items.push(
" admin " " administrators " " administrator " " 管理员 " " 系统管理员 " );
    items.push(
" select " " delete " " update " " insert " " create " " drop " " alter " " trancate " );
    str 
=  str.toLowerCase();
    
for  ( var  i  =   0 ; i  <  items.length; i ++ ) {
        
if  (str.indexOf(items[i])  >=   0 ) {
            
return   true ;
        }
    }
    
return   false ;
}


/* ************************************************************************************ */
/* ************************************时间的验证**************************************** */
/* ************************************************************************************ */

/* *
 * 检查日期格式是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 * 注意:此处不能验证中文日期格式
 * 验证短日期(2007-06-05)
 
*/
function  checkDate(str){
    
// var value=str.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9]))|(((1[89]\d2)|([29]\d3))()(11|0?[469])()(30|[12][09]|0?[19]))|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9]))|(([2468][048]00)()(0?2)()(29))|(^([3579][26]00)(-)(0?2)(-)(29))|(([1][89][0][48])()(0?2)()(29))|(^([2-9][0-9][0][48])(-)(0?2)(-)(29))|(([1][89][2468][048])()(0?2)()(29))|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29))|(([1][89][13579][26])()(0?2)()(29))|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);
     var  value  =  str.match( / ^(\d{1,4})(-|\ / )(\d{ 1 , 2 })\ 2 (\d{ 1 , 2 })$ / );
     if  (value  ==   null ) {
        
return   false ;
    }
    
else  {
        
var  date  =   new  Date(value[ 1 ], value[ 3 -   1 , value[ 4 ]);
        
return  (date.getFullYear()  ==  value[ 1 &&  (date.getMonth()  +   1 ==  value[ 3 &&  date.getDate()  ==  value[ 4 ]);
    }
}

/* *
 * 检查时间格式是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 * 验证时间(10:57:10)
 
*/
function  checkTime(str){
    
var  value  =  str.match( / ^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$ / )
    
if  (value  ==   null ) {
        
return   false ;
    }
    
else  {
        
if  (value[ 1 >   24   ||  value[ 3 >   60   ||  value[ 4 >   60 ) {
            
return   false
        }
        
else  {
            
return   true ;
        }
    }
}

/* *
 * 检查全日期时间格式是否正确
 * 输入:str  字符串
 * 返回:true 或 flase; true表示格式正确
 * (2007-06-05 10:57:10)
 
*/
function  checkFullTime(str){
    
// var value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
     var  value  =  str.match( / ^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$ / );
    
if  (value  ==   null ) {
        
return   false ;
    }
    
else  {
        
// var date = new Date(checkFullTime[1], checkFullTime[3] - 1, checkFullTime[4], checkFullTime[5], checkFullTime[6], checkFullTime[7]);
         // return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4] && date.getHours() == value[5] && date.getMinutes() == value[6] && date.getSeconds() == value[7]);
         return   true ;
    }
    
}




/* ************************************************************************************ */
/* ***********************************身份证号码的验证************************************ */
/* ************************************************************************************ */

/* *  
 * 身份证15位编码规则:dddddd yymmdd xx p
 * dddddd:地区码
 * yymmdd: 出生年月日
 * xx: 顺序类编码,无法确定
 * p: 性别,奇数为男,偶数为女
 * <p />
 * 身份证18位编码规则:dddddd yyyymmdd xxx y
 * dddddd:地区码
 * yyyymmdd: 出生年月日
 * xxx:顺序类编码,无法确定,奇数为男,偶数为女
 * y: 校验码,该位数值可通过前17位计算获得
 * <p />
 * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
 * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
 * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
 * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置
 *
 
*/
var  Wi  =  [ 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ]; //  加权因子   
var  ValideCode  =  [ 1 0 10 9 8 7 6 5 4 3 2 ]; //  身份证验证位值.10代表X   
function  IdCardValidate(idCard){
    idCard 
=  trim(idCard.replace( /   / g, ""));
     if  (idCard.length  ==   15 ) {
        
return  isValidityBrithBy15IdCard(idCard);
    }
    
else  
        
if  (idCard.length  ==   18 ) {
            
var  a_idCard  =  idCard.split( "" ); //  得到身份证数组   
             if  (isValidityBrithBy18IdCard(idCard)  &&  isTrueValidateCodeBy18IdCard(a_idCard)) {
                
return   true ;
            }
            
else  {
                
return   false ;
            }
        }
        
else  {
            
return   false ;
        }
}

/* *  
 * 判断身份证号码为18位时最后的验证位是否正确
 * @param a_idCard 身份证号码数组
 * @return
 
*/
function  isTrueValidateCodeBy18IdCard(a_idCard){
    
var  sum  =   0 //  声明加权求和变量   
     if  (a_idCard[ 17 ].toLowerCase()  ==   ' x ' ) {
        a_idCard[
17 =   10 ; //  将最后位为x的验证码替换为10方便后续操作   
    }
    
for  ( var  i  =   0 ; i  <   17 ; i ++ ) {
        sum 
+=  Wi[i]  *  a_idCard[i]; //  加权求和   
    }
    valCodePosition 
=  sum  %   11 ; //  得到验证码所位置   
     if  (a_idCard[ 17 ==  ValideCode[valCodePosition]) {
        
return   true ;
    }
    
else  {
        
return   false ;
    }
}

/* *  
 * 通过身份证判断是男是女
 * @param idCard 15/18位身份证号码
 * @return 'female'-女、'male'-男
 
*/
function  maleOrFemalByIdCard(idCard){
    idCard 
=  trim(idCard.replace( /   / g, "")); / /  对身份证号码做处理。包括字符间有空格。   
    
if  (idCard.length  ==   15 ) {
        
if  (idCard.substring( 14 15 %   2   ==   0 ) {
            
return   ' female ' ;
        }
        
else  {
            
return   ' male ' ;
        }
    }
    
else  
        
if  (idCard.length  ==   18 ) {
            
if  (idCard.substring( 14 17 %   2   ==   0 ) {
                
return   ' female ' ;
            }
            
else  {
                
return   ' male ' ;
            }
        }
        
else  {
            
return   null ;
        }
}

/* *  
 * 验证18位数身份证号码中的生日是否是有效生日
 * @param idCard 18位书身份证字符串
 * @return
 
*/
function  isValidityBrithBy18IdCard(idCard18){
    
var  year  =  idCard18.substring( 6 10 );
    
var  month  =  idCard18.substring( 10 12 );
    
var  day  =  idCard18.substring( 12 14 );
    
var  temp_date  =   new  Date(year, parseFloat(month)  -   1 , parseFloat(day));
    
//  这里用getFullYear()获取年份,避免千年虫问题   
     if  (temp_date.getFullYear()  !=  parseFloat(year)  ||
    temp_date.getMonth() 
!=  parseFloat(month)  -   1   ||
    temp_date.getDate() 
!=  parseFloat(day)) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

/* *  
 * 验证15位数身份证号码中的生日是否是有效生日
 * @param idCard15 15位书身份证字符串
 * @return
 
*/
function  isValidityBrithBy15IdCard(idCard15){
    
var  year  =  idCard15.substring( 6 8 );
    
var  month  =  idCard15.substring( 8 10 );
    
var  day  =  idCard15.substring( 10 12 );
    
var  temp_date  =   new  Date(year, parseFloat(month)  -   1 , parseFloat(day));
    
//  对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法   
     if  (temp_date.getYear()  !=  parseFloat(year)  ||
    temp_date.getMonth() 
!=  parseFloat(month)  -   1   ||
    temp_date.getDate() 
!=  parseFloat(day)) {
        
return   false ;
    }
    
else  {
        
return   true ;
    }
}

// 去掉字符串头尾空格   
function  trim(str){
    
return  str.replace( / (^\s*)|(\s*$) / g,  "" );
}

 

 

目录
打赏
0
1
0
0
5
分享
相关文章
Next.js 实战 (九):使用 next-auth 完成第三方身份登录验证
这篇文章介绍了next-auth,一个为Next.js设计的身份验证库,支持多种认证方式,如电子邮件和密码、OAuth2.0提供商(如Google、GitHub、Facebook等)以及自定义提供商。文章包含了如何配置Github Provider以及会话管理,并提到了适配器Adapters在next-auth中的作用。最后,文章强调了next-auth的强大功能值得进一步探索。
101 10
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
71 32
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
60 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
50 5
js中函数、方法、对象的区别
js中函数、方法、对象的区别
55 2
Node.js 函数
10月更文挑战第5天
35 3

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等