表单验证之正则表达式

Posted Dreamice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表单验证之正则表达式相关的知识,希望对你有一定的参考价值。

1.    手机号验证

经网络查询可知,中国三大运营商号码波段主要有:

(1).    移动号段:

 134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188

(2).    联通号段:

  130 131 132 145 155 156 171 175 176 185 186

(3).    电信号段:

 133 149 153 173 177 180 181 189

 虚拟运营商:

 170

因此设定手机号验证的正则表达式如下:

^(13[0-9]|15[012356789]|17[0135678]|18[0-9]|14[579])[0-9]{8}$

2.    固话验证

固话格式主要包括(010)1234567-1234、010-1234567-1234、(010)1234567、010-1234567、1234567、12345678等格式,因此,设定手机号验证的正则表达式如下:

^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,8}(-\d{1,4})?$

3.    身份证验证

由于第一代身份证号和第二代身份证号规则不同,因此设定不同的验证规则,

第一代身份证号15位数,验证表达式:

^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

第二代身份证18位数,验证表达式:

^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$

4.    信用卡、银行卡验证

信用卡、银行卡的验证规则是根据“模10”算法而来,“模10”算法的规则如下:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果能被10整除则有效。

 

我国主流银行信用卡标准卡是16位卡号,借记卡一般是19位卡号,不完全是,因此以中国的卡号验证符合jQueryValidate验证规则。

creditcard: function( value, element ) {

                     if ( this.optional( element ) ) {

                            return "dependency-mismatch";

                     }

                     // accept only spaces, digits and dashes

                     if ( /[^0-9 \-]+/.test( value ) ) {

                            return false;

                     }

                     var nCheck = 0,

                            nDigit = 0,

                            bEven = false,

                            n, cDigit;

 

                     value = value.replace( /\D/g, "" );

 

                     // Basing min and max length on

                     // http://developer.ean.com/general_info/Valid_Credit_Card_Types

                     if ( value.length < 13 || value.length > 19 ) {

                            return false;

                     }

 

                     for ( n = value.length - 1; n >= 0; n--) {

                            cDigit = value.charAt( n );

                            nDigit = parseInt( cDigit, 10 );

                            if ( bEven ) {

                                   if ( ( nDigit *= 2 ) > 9 ) {

                                          nDigit -= 9;

                                   }

                            }

                            nCheck += nDigit;

                            bEven = !bEven;

                     }

 

                     return ( nCheck % 10 ) === 0;

              },

以上是关于表单验证之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

js之正则表单验证dom模型

JavaScript高级之正则表达式

javascript:正则表达式一个表单验证的例子

Jquery 验证引擎正则表达式

正则表达式之基本概念

正则表达式表单验证实例代码详解