求一个能验证银行卡号的正则表达式

weixin_37676292 2017-02-27 09:36:41
求一个能验证银行卡号的正则表达式
...全文
37086 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
深井猫 2018-12-22
  • 打赏
  • 举报
回复
引用 9 楼 qq_27677137 的回复:
传说中有9位的卡号,据说是一种身份的象征


是有9位的卡号,不过那种是很久很久以前的借记卡卡号
其实现在的IC借记卡卡号一般是15位以上,低于15位的一般是以前的磁条卡
七月河 2018-09-30
  • 打赏
  • 举报
回复
传说中有9位的卡号,据说是一种身份的象征
qlkj666 2018-03-12
  • 打赏
  • 举报
回复
现在每个银行发出的卡号各类太多,只能大概判断一下数字
从此不换网名 2018-03-10
  • 打赏
  • 举报
回复
做个记录吧!
qq_41791090 2018-03-05
  • 打赏
  • 举报
回复
//调用 if($_POST['idcar']){ if($this->validation_filter_id_card($_POST['idcar'])){ $array['idcar']=$_POST['idcar']; }else{ echo json_encode(array('status'=>0,'msg'=>'身份证错误')); exit(); } } //身份证验证方法 function validation_filter_id_card($id_card){ if(strlen($id_card)==18){ return $this->idcard_checksum18($id_card); }elseif((strlen($id_card)==15)){ $id_card=$this->idcard_15to18($id_card); return $this->idcard_checksum18($id_card); }else{ return false; } } // 计算身份证校验码,根据国家标准GB 11643-1999 function idcard_verify_number($idcard_base){ if(strlen($idcard_base)!=17){ return false; } //加权因子 $factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //校验码对应值 $verify_number_list=array('1','0','X','9','8','7','6','5','4','3','2'); $checksum=0; for($i=0;$i<strlen($idcard_base);$i++){ $checksum += substr($idcard_base,$i,1) * $factor[$i]; } $mod=$checksum % 11; $verify_number=$verify_number_list[$mod]; return $verify_number; } // 将15位身份证升级到18位 function idcard_15to18($idcard){ if(strlen($idcard)!=15){ return false; }else{ // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码 if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){ $idcard=substr($idcard,0,6).'18'.substr($idcard,6,9); }else{ $idcard=substr($idcard,0,6).'19'.substr($idcard,6,9); } } $idcard=$idcard.$this->idcard_verify_number($idcard); return $idcard; } // 18位身份证校验码有效性检查 function idcard_checksum18($idcard){ if(strlen($idcard)!=18){ return false; } $idcard_base=substr($idcard,0,17); if($this->idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){ return false; }else{ return true; } }
a8558892 2018-02-28
  • 打赏
  • 举报
回复
引用 4 楼 qq_39961695 的回复:
银行卡号没有存在15位的明知是过来纠正一下,希望不要误导
其实银行卡号是13到19的,银联规范里面明确规定的,不是我说楼上是骗大家,实际上大多数卡号都是16位以上,15位的卡是公司银行账号,为什么我知道的这么清楚,因为我踩到坑了,出去的产品限制16位以上,结果别人家的卡号输入不了,差点死在上面,记住是13位以上的
Zita_1111 2017-08-24
  • 打赏
  • 举报
回复
银行卡号没有存在15位的明知是过来纠正一下,希望不要误导
xuzuning 2017-02-27
  • 打赏
  • 举报
回复
/\d{15}|\d{19}/
wodebaobei12611 2017-02-27
  • 打赏
  • 举报
回复
银行卡号一般15位或19位,第一位不为0吧
$str = '6228480402564890018';  
   
preg_match('/^([1-9]{1})(\d{14}|\d{18})$/', $str,$match);  
print_r($match[0]);
傲雪星枫 2017-02-27
  • 打赏
  • 举报
回复

$str = '6228480402564890018';  
  
preg_match('/([\d]{4})([\d]{4})([\d]{4})([\d]{4})([\d]{0,})?/', $str,$match);  
  
unset($match[0]);  
echo implode(' ', $match);  

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧