- 手機號
手機號的號段說明轉載自:國內手機號碼的正則表達式|蝸牛的積累
手機名稱有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混淆;部分車牌無法分辨等等。