zoukankan      html  css  js  c++  java
  • 表单验证之正则表达式

    概述

    做验证必然要用到正则表达式,没有基础的童鞋建议先读一下大神总结的《正则表达式30分钟入门教程

    各类验证规则及说明

    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

         (4).   虚拟运营商: 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}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$

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

    ^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$
    4、信用卡、银行卡验证

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

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

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

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

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

     1 creditcard: function( value, element ) {
     2 
     3                      if ( this.optional( element ) ) {
     4 
     5                             return "dependency-mismatch";
     6                      }
     7                      // accept only spaces, digits and dashes
     8                      if ( /[^0-9 -]+/.test( value ) ) {
     9                             return false;
    10                      }
    11                      var nCheck = 0,
    12                             nDigit = 0,
    13                             bEven = false,
    14                             n, cDigit;
    15                      value = value.replace( /D/g, "" );
    16                      if ( value.length < 13 || value.length > 19 ) {
    17                             return false;
    18                      }
    19                      for ( n = value.length - 1; n >= 0; n--) {
    20                             cDigit = value.charAt( n );
    21                             nDigit = parseInt( cDigit, 10 );
    22                             if ( bEven ) {
    23                                    if ( ( nDigit *= 2 ) > 9 ) {
    24                                           nDigit -= 9;
    25                                    }
    26                             }
    27                             nCheck += nDigit;
    28                             bEven = !bEven;
    29                      }
    30                      return ( nCheck % 10 ) === 0;
    31               },

     5、中文验证

    ^[u4e00-u9fa5]+$

    6、中英文、数字或下划线

    ^[u4e00-u9fa5_a-zA-Z0-9]{1,20}$

    7、6~20位数字或英文字母(多用于密码框验证)

    ^[0-9A-Za-z]{6,20}$

    8、邮政编码

    ^[1-9]d{5}(?!d)$

     9、Java中将yyyy/mm或者yyyy.mm转成yyyymm存入数据库

    未完待续........

  • 相关阅读:
    【并查集】hdu 1198 Farm Irrigation
    【并查集】hdu 1325 Is It A Tree?
    【并查集】hdu 1272 小希的迷宫
    【并查集】hdu 1856 More is better
    【并查集】hdu 3635 Dragon Balls
    【并查集】poj 1988 Cube Stacking
    【并查集】poj 2492 A Bug's Life(二集合问题)
    【并查集】poj 2236 Wireless Network
    【并查集】poj 1703 Find them, Catch them(二集合问题)
    【并查集】poj 1611 The Suspects
  • 原文地址:https://www.cnblogs.com/Dreamice/p/7127965.html
Copyright © 2011-2022 走看看