银行转账引起的js正则的一点小感慨
2013-04-30 23:53
183 查看
今天交学费,使用工行的网银转账,在转账的时候,发现客户输入的账号,没有自动的位数隔开的识别,比如说满四位就自动添加一个横线或者添加空格之类的东西。我相信基本上每个汇款的用户都会至少核对一遍账号,这样的一堆紧挨着的数字让人看起来真的是很不舒服的。偶然想起来,前一段时间学的js的关于这块儿的匹配处理,现在把教程上的代码,整理出来,重新回顾一下js正则表达式的使用。
Luhn算法:
总结:
1.js的正则表达式规则跟C#大致相似,区分脱字符(^)和表示开头的^符号的一个方法是,表示托字符的^要放到[]中,表示开头的^不能放到[]中。
2.正则表达式中的引用和缓存是一种想通的设计思想,当初在学习的时候,并没有主动的去思考这个问题,说明,在针对程序的编程思想上需要继续做更多的提炼和积累,这样将来在遇到类似的问题或者知识的时候,在潜意识中就会去引领自己思考,这样才体现出程序的灵魂所在。
var reMasterCard =/^5[1-5]\d{14}$/; //^表示开头,$表示结尾 //实际中可能有空格和横线 var reMasterCard =/^5[1-5]\d{2}[\s\-]?\d{4}[\s\-]?\d{4}[\s\-]?\d{4}$/; //使用捕获型分组,以备将来验证唯一性 var reMasterCard =/^(5[1-5]\d{2})[\s\-]?(\d{4})[\s\-]?(\d{4})[\s\-]?(\d{4})$/; //构建函数: function isValidMasterCard (sText){ var reMasterCard =/^(5[1-5]\d{2})[\s\-]?(\d{4})[\s\-]?(\d{4})[\s\-]?(\d{4})$/; if(reMasterCard.test(sText)){ var sCardNum =RegExp.$1+RegExp.$2+RegExp.$3+RegExp.$4; //此处添加逻辑处理,调用验证的方法 return luhnCheckSum(sCardNum); }else{ return false; } }
Luhn算法:
function luhnCheckSum(sCardNum){ var iOddSum =0; var bIsOdd=true; for (var i = sCardNum.length-1;i=0;i--){ var iNum =parseInt(sCardNum.charAt(i)); //将奇数位上的数字相加 if(bIsOdd){ iOddSum+=iNum; //将偶数位上的数字*2后相加 }else{ iNum =iNum*2; //如果加起来的数字为两位数,那么就将个位和十位的数字相加得到新的位数, if(iNum>9){ iNum=eval(iNum.toString().split("").join("+")); } //将所有的偶数位上的数字相加 iEvenSum+=iNum; } bIsOdd=!=bIsOdd; } //判断,循环完后,奇数为的和与偶数位的和相加后的结果是否可以被10整除 rerurn ((iEvenSum+iOddSum)%10==0); }
调用:
alert(isValidMasterCard("5432 1234 5678 9012")); //false alert(isValidMasterCard("5432-1234-5678-9012")); //false alert(isValidMasterCard("5432123456789012")); //false
总结:
1.js的正则表达式规则跟C#大致相似,区分脱字符(^)和表示开头的^符号的一个方法是,表示托字符的^要放到[]中,表示开头的^不能放到[]中。
2.正则表达式中的引用和缓存是一种想通的设计思想,当初在学习的时候,并没有主动的去思考这个问题,说明,在针对程序的编程思想上需要继续做更多的提炼和积累,这样将来在遇到类似的问题或者知识的时候,在潜意识中就会去引领自己思考,这样才体现出程序的灵魂所在。
相关文章推荐
- JS使用正则控制用户输入银行卡号及格式化
- js正则实现用户输入银行卡号的控制及格式化
- js jquery验证银行卡号信息正则学习
- 用JS的正则表达式验证银行账号(19位数字)
- php,防止js注入的正则表达式
- JS-正则表达式4
- js正则大扫除
- js 正则格式验证与提示
- js之正则表达式详解(一)
- js:快速学会应用正则表达式匹配字符
- js中使用正则表达式去除字符串前后空格
- js的正则表达式 test, exec, match, replace
- js不支持这句正则,伤不起啊。。。
- 07-js正则验证文件后缀名
- 使用 js+正则表达式为关键词添加链接
- JS的正则表达式
- JS正则表达式大全
- js的正则表达式总结
- 不要小看注释掉的JS 引起的安全问题
- js用正则表达式判断字符串中是否有中文