1. 程式人生 > >表單驗證之正則表達式

表單驗證之正則表達式

cti 信用卡 for 整除 develop 虛擬 accep das 一位

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;

},

表單驗證之正則表達式