常用正则

电话号码: /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/, pwReg= /^\S{6,12}$/

邮箱: /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/

身份证号: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/

验证码(6位数字): /^\d{6}$/

银行账号:(银行卡号Luhm校验)

Luhm校验规则:16位银行卡号(19位通用):

1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(18),位于奇数位号上的数字乘以 2。

2.将奇位乘积的个十位全部相加,再加上所有偶数位上的数字。

3.将加法和加上校验位能被 10 整除。

function luhmCheck(bankno) {
    if(bankno.length < 16 || bankno.length > 19) {
        console.log("银行卡号长度必须在16到19之间");
        return false;
    }
    var num = /^\d*$/; //全数字
    if(!num.exec(bankno)) {
        console.log("银行卡号必须全为数字");
        return false;
    }
    //开头6位
    var strBin = "10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
    if(strBin.indexOf(bankno.substring(0, 2)) == -1) {
        console.log("银行卡号开头6位不符合规范");
        return false;
    }
    var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一位(与luhm进行比较)

    var first15Num = bankno.substr(0, bankno.length - 1); //前15或18位
    var newArr = new Array();
    for(var i = first15Num.length - 1; i > -1; i--) { //前15或18位倒序存进数组
        newArr.push(first15Num.substr(i, 1));
    }
    var arrJiShu = new Array(); //奇数位*2的积 <9
    var arrJiShu2 = new Array(); //奇数位*2的积 >9

    var arrOuShu = new Array(); //偶数位数组
    for(var j = 0; j < newArr.length; j++) {
        if((j + 1) % 2 == 1) { //奇数位
            if(parseInt(newArr[j]) * 2 < 9)
                arrJiShu.push(parseInt(newArr[j]) * 2);
            else
                arrJiShu2.push(parseInt(newArr[j]) * 2);
        } else //偶数位
            arrOuShu.push(newArr[j]);
    }

    var jishu_child1 = new Array(); //奇数位*2 >9 的分割之后的数组个位数
    var jishu_child2 = new Array(); //奇数位*2 >9 的分割之后的数组十位数
    for(var h = 0; h < arrJiShu2.length; h++) {
        jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
        jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
    }

    var sumJiShu = 0; //奇数位*2 < 9 的数组之和
    var sumOuShu = 0; //偶数位数组之和
    var sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
    var sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
    var sumTotal = 0;
    for(var m = 0; m < arrJiShu.length; m++) {
        sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
    }

    for(var n = 0; n < arrOuShu.length; n++) {
        sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
    }

    for(var p = 0; p < jishu_child1.length; p++) {
        sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
        sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
    }
    //计算总和
    sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2);

    //计算Luhm值
    var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
    var luhm = 10 - k;

    if(lastNum == luhm) {
        console.log("Luhm验证通过");
        return true;
    } else {
        console.log("银行卡号必须符合Luhm校验");
        return false;
    }
}
时间: 2024-10-05 09:17:55

常用正则的相关文章

基于php常用正则表达整理(下)

61        \n 匹配一个换行符.等价于 \x0a 和 \cJ.62        \r 匹配一个回车符.等价于 \x0d 和 \cM.63        \s 匹配任何空白字符,包括空格.制表符.换页符等等.等价于[ \f\n\r\t\v].64        \S 匹配任何非空白字符.等价于 [^ \f\n\r\t\v].65        \t 匹配一个制表符.等价于 \x09 和 \cI.66        \v 匹配一个垂直制表符.等价于 \x0b 和 \cK.67      

正则表达式学习和常用正则验证规则(包括用户名,密码,手机号,网址等)

正则表达式基础语法 1.1匹配不同类型的字符 字符类 匹配的字符 \d 匹配一个数字字符.等价于 [0-9]. \D 匹配一个非数字字符.等价于 [^0-9]. \w 匹配包括下划线的任何单词字符.等价于‘[A-Za-z0-9_]‘. \W 匹配任何非单词字符.等价于 ‘[^A-Za-z0-9_]‘. \s 匹配任何空白字符,包括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S 匹配任何非空白字符.等价于 [^ \f\n\r\t\v]. .(点号) 任一字符 […] 括号中的

php 常用正则

转载:http://bbs.php100.com/read-htm-tid-83266.html 1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    "^\d+$" //非负整数(正整数 + 0) 3.    "^[0-9]*[1-9][0-9]*$" //正整数 4.    "^((-\d+)|(0+))$" //非正整数(负整数 + 0) 5.    "^-[0-9]*[1-9][0

jQuery常用正则验证

jQuery常用正则验证  [转] 基础知识:JS中创建正则对象的方式:-使用RegExp()构造函数方式,如:var patten=new RegExp("s$");-使用正则直接量方式,如:var patten=/s$/;注意:就像字符串直接量被定义为包含在引号("")内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符:斜杠外末尾可以加正则全局标识符. 验证文字输入个数<script type="text/javascript

js 常用正则

2016-09-09 整数或者小数: ^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字: "^[0-9]*$" . 只能输入 n 位的数字: "^\d{n}$" . 只能输入至少 n 位的数字: "^\d{n,}$" . 只能输入 m~n 位的数字:. "^\d{m,n}$" 只能输入零和非零开头的数字: "^(0|[1-9][0-9]*)$" . 只能输入有两位小数的正实数: "

正则语法及常用正则

正则表达式语法 在典型的搜索和替换操作中,必须提供要查找的确切文字.这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的. 使用正则表达式,就可以: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证. 替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字. 根据模式匹配从字符串中提取一个子字符串.

PHP 常用正则汇总

平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:   "^\d+$" //非负整数(正整数 + 0)   "^[0-9]*[1-9][0-9]*$" //正整数   "^((-\d+)|(0+))$" //非正整数(负整数 + 0)   "^-[0-9]*[1-9][0-9]*$" //负整数   "^-?\d+$" //整数   "^\d+(\.\d+)?$"

.Net常用正则判断方法

原文:.Net常用正则判断方法 /// <summary> /// 判断string类型否为数字 /// </summary> /// <param name="strNumber"></param> /// <returns></returns> public static bool IsNumber(string strNumber) { string strValidRealPattern = "^

爬虫常用正则、re.findall 使用

爬虫常用正则 爬虫经常用到的一些正则,这可以帮助我们更好地处理字符. 正则符 单字符 . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w \s :所有的空白字符包,括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v] \S : 非空白 数量修饰 * : 任意多次 >=0 + : 至少1次 >=1 ? : 可有可无 0次或者1次 {m} :固定m次 hello

js常用正则收藏

js的正则在使用时用在开头和结尾加'/' 例如: var letterOrNumber = /^[A-Za-z0-9]+$/;// 仓位只能 包含字母和数字        var seatValidator = letterOrNumber.test(seatID); if (seatValidator) {// 由字母和数字组成                if (seatID.length <1 || seatID.length >2) {// 长度限制