Android中手机号、车牌号正则表达式

  • 手机号

手机号的号段说明转载自:国内手机号码的正则表达式|蜗牛的积累

手机名称有GSM:表示只支持中国联通或者中国移动2G号段(130、131、132、134、135、136、137、138、139、145、147、150、151、152、155、156、157、158、159、182、185、186、187、188)

手机名称有CDMA:表示只支持中国电信2G号段(133、153、180、181、189)

手机名称有WCDMA/GSM:表示支持中国联通或者中国移动2G号段,以及中国联通3G号段(130、131、132、134、135、136、137、138、139、145、147、150、151、152、155、156、157、158、159、182、183、185、186、187、188),不支持 移动3G业务,不支持电信卡。

手机名称有TD-SCDMA/GSM:表示支持中国联通或者中国移动2G号段,以及中国移动3G号段(130、131、132、134、135、136、137、138、139、145、147、150、151、152、155、156、157、158、159、 182、183、185、186、187、188),不支持联通3G业务,不支持电信卡。

手机名称有CDMA2000/CDMA:表示支持中国电信2G号段,以及中国电信3G号段(133、153、180、181、189),不支持移动联通卡

手机名称有CDMA2000/GSM(双模双待):表示一张卡支持中国电信2G号段,以及中国电信3G号段(133、153、180、181、189),另一张卡支持中国移动或中国联通2G号段的语音和短信功能。

第三方运营商的170号码段

补充:联通4G 176、电信4G 177、移动4G 178号段

根据这些写出的正则表达式函数如下:

1 public static boolean isMobileNO(String mobiles) {
2 String telRegex = "13\\d{9}|14[57]\\d{8}|15[012356789]\\d{8}|18[01256789]\\d{8}|17[0678]\\d{8}"; 3 if (TextUtils.isEmpty(mobiles)) return false; 4 else return mobiles.matches(telRegex); 5 }

其中:

“13\\d{9}”指前两位为1和3,后面跟任意9位;

“14[57]\\d{8}”指前两位为1和4,第三位为5或7,后面跟任意8位;

以此类推。

  • 车牌号

车牌号的正则表达式网上一直有,没怎么变过:

1 public static boolean isCarnumberNO(String carnumber) {
2 /* 3  车牌号格式:汉字 + A-Z + 5位A-Z或0-9 4  (只包括了普通车牌号,教练车和部分部队车等车牌号不包括在内) 5 */ 6 String carnumRegex = "[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}"; 7 if (TextUtils.isEmpty(carnumber)) return false; 8 else return carnumber.matches(carnumRegex); 9 }

当然这个正则表达式有局限性,比如第一位只限定是汉字,没限定只有34个省汉字缩写;车牌号不存在字母I和O,防止和1、0混淆;部分车牌无法分辨等等。

最后使用的是下面这个正则表达式,加入了以两位字母开头的车牌:

^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}

[a-zA-Z_0-9_\u4e00-\u9fa5]$|^[a-zA-Z]{2}\d{7}$

  • 身份证号

需要一个简单的验证身份证号的正则表达式,从网上查了很多,都有问题,主要是只要超过15位,都能够通过,于是自己查了半天手册,写了下面这个式子,能够满足简单的要求:
1、15位或18位,如果是15位,必需全是数字。
2、如果是18位,最后一位可以是数字或字母Xx,其余必需是数字。

/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/

从这个表达式想到的:
1、正则表达式首先是要通过正确的
2、限制不正确
3、可以不限制其中的某此规则,但一定要让正确的先通过。

/*
 * 身份证15位编码规则:dddddd yymmdd xx p
 * dddddd:6位地区编码
 * yymmdd: 出生年(两位年)月日,如:910215
 * xx: 顺序编码,系统产生,无法确定
 * p: 性别,奇数为男,偶数为女
 * 
 * 身份证18位编码规则:dddddd yyyymmdd xxx y
 * dddddd:6位地区编码
 * yyyymmdd: 出生年(四位年)月日,如:19910215
 * xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
 * y: 校验码,该位数值可通过前17位计算获得
 * 
 * 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
 * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
 * 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
 * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
 * i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
 */
function validateIdCard(idCard){
 //15位和18位身份证号码的正则表达式
 var regIdCard=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;

//如果通过该验证,说明身份证格式正确,但准确性还需计算
 if(regIdCard.test(idCard)){
  if(idCard.length==18){
   var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里
   var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
   var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
   for(var i=0;i<17;i++){
    idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];
   }

var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
   var idCardLast=idCard.substring(17);//得到最后一位身份证号码

//如果等于2,则说明校验码是10,身份证号码最后一位应该是X
   if(idCardMod==2){
    if(idCardLast=="X"||idCardLast=="x"){
     alert("恭喜通过验证啦!");
    }else{
     alert("身份证号码错误!");
    }
   }else{
    //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
    if(idCardLast==idCardY[idCardMod]){
     alert("恭喜通过验证啦!");
    }else{
     alert("身份证号码错误!");
    }
   }
  } 
 }else{
  alert("身份证格式不正确!");
 }
}

正则表达式 手机号 车牌号 身份证 姓名相关推荐

  1. c++11 regex 正则表达式验证车牌号

    在使用c++11 regex验证车牌号前,要首先明白有几个坑要踩: 1.车牌号校验规则,只有弄清楚了校验车牌号的规则才能写出正确的正则表达式,所以首先要弄清楚车牌号的校验规则. 2.c++11 中re ...

  2. java 车牌号验证正则表达式_车牌号校验正则表达式

    标签: 一.车牌号校验规则 1.常规车牌号:仅允许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成.如:粤B12345: 2.武警车牌:允许前两位为大写英文字母,后面可录入五个或六个字符 ...

  3. java 车牌正则表达式_车牌号校验正则表达式

    一.车牌号校验规则 1.常规车牌号:仅允许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成.如:粤B12345: 2.最后一个为汉字的车牌:允许以汉字开头,后面可录入六个字符,前五位字符 ...

  4. python正则表达式完成车牌号检验

    正则表达式:对于车牌而言,选用的正则表达式是"^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼A-Z]{1}[A-Z]{1}\s{1}[A-Z0-9]{4}[A-Z0-9挂 ...

  5. java 车牌号正则_js 正则表达式 判断车牌号

    1.常规车牌号:仅允许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成.如:粤B12345: 2.武警车牌:允许前两位为大写英文字母,后面可录入七个字符,由大写英文字母和阿拉伯数字组成, ...

  6. java 车牌号验证正则表达式_使用正则表达式验证手机号、车牌号

    1.javascript验证手机号 function checkPhone(){ var sPhone = document.getElementById("id").value ...

  7. 使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名

    目录 (原创不易,你们对阿超的赞就是阿超持续更新的动力!) (以免丢失,建议收藏~~~) ------------------------------------------------------- ...

  8. js正则表达式校验:手机号、身份证、护照、港澳台通行证、银行卡号、车牌号等......

    js正则表达式校验:手机号.身份证.护照.港澳台通行证.银行卡号等...... 1.手机号 2.身份证号 3.护照 4.港澳台通行证.居住证 5.银行卡号 6.军官证 7.户口本 8.用户名.中文姓名 ...

  9. 最常用的几个数据验证正则判断,手机号,车牌号,身份证,Email,IP

    *** 对手机号码进行校验 *** * 移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 * 178 182 183 ...

最新文章

  1. 滑动窗口,拥塞控制算法
  2. QuickLook搭配Everthing提高工作效率
  3. 强!chrome彻底关闭自动升级新方法实例演示,终于解决了chrome自动升级的烦恼
  4. 今天是星期四,不知道是不是由于太想家了,每天晚上做梦遇到家人
  5. Android App开发——使用CameraX打开前后摄像头拍照并保存(Java实现)
  6. Linux系统Logrotate服务介绍
  7. 北邮OJ 1021. 16校赛-Stone Game
  8. 这文字的起始位置_ae制作文字动画?ae文字动画教程
  9. 卷积神经网络训练模拟量化实践
  10. 解决添加Com引用 生成的Interop.*.dll 版本号永远是1.0的问题
  11. c语言取子程序地址,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  12. c++ winpcap开发(7)
  13. 二叉树插入算法的非递归版本
  14. 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
  15. 介绍计算机课程英语作文,关于电脑课的英语作文
  16. Xilinx FPGA PTP IEEE1588使用
  17. DNS 智能解析功能评测之华为云篇~
  18. 研发岗和产品岗的时间管理策略总结-大局观概述
  19. DINO:自监督ViT的新特性
  20. sqlserver 2000操作数据库

热门文章

  1. 2019年CSDN博客排名前15名强(历史上最强15名)
  2. 谁说体育老师教不了语文
  3. 现代信号处理——高阶统计分析(高阶谱)
  4. 视频操纵中的新AI技术转向
  5. 华为android通知使用权6,如何在华为手机上开启百度应用的通知使用权限
  6. Redis 面试全攻略、面试题大集合
  7. css 实现文字渐变以及文字颜色流动
  8. java-面向对象,构造器
  9. 【QT开发专题-天气预报】1. 效果演示、技术分析
  10. asp.net一些面试题(转)