你的位置:首页 > 操作系统

[操作系统]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-94     (只包括了普通车牌号,教练车和部分部队车等车牌号不包括在内)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混淆;部分车牌无法分辨等等。