本程序可查詢3位、5位、7位、8位、11位的電話號碼,並且能夠分辨出其號碼是電信、移動、聯通、衛星、座機、還有地址、省、區市。這個程序的代碼和前幾天發的那篇博客,部分代碼進行了優化。
號碼號段編輯
中國移動號段:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198
中國聯通號段:130、131、132、145、155、156、166、176、185、186、196
中國電信號段:133、149、153 、180 、181 、189、173、177、190、191、193、199
中國廣電號段:192
虛擬運營商號段:
聯通:167、1704、1707、1708、1709、171
電信:162、1700、1701、1702
移動:165、1705、1706
物聯網號段:
聯通:1400、146
電信:1410
移動:1440、148
衛星電話號段:
電信:1349、1740(0-5)
package phonemuber;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.DataInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class Phonenuber extends JFrame implements ActionListener {
JPanel jpN;
JPanel jpS;
JLabel jLabel;
JTextField jTextField;
JButton jButton;
JTextArea jTextArea;
Phonenuber() {
jpN = new JPanel();
jpS = new JPanel();
jLabel = new JLabel("請輸入電話號碼");
jTextField = new JTextField(20);
jButton = new JButton("查詢");
jTextArea = new JTextArea(50, 50);
jpN.add(jLabel);
jpN.add(jTextField);
jpN.add(jButton);
jpS.add(jTextArea);
jButton.addActionListener(this);
this.add(jpN, BorderLayout.NORTH);
this.add(jpS, BorderLayout.CENTER);
this.setTitle("電話號碼檢測程序");
this.setVisible(true);
this.setBounds(400, 200, 800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButton) {
String regex = "^((13[0-9])|(14[5,7,9])|(15[0-3][5-9])|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
String phoneNumber = jTextField.getText().replace(" ", "");
boolean isNumber=isInteger(phoneNumber);
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phoneNumber);
boolean isMatch = m.matches();
if (isNumber){
if (phoneNumber.length() >= 3) {
if (phoneNumber.length() == 11) {
if (isMatch) {
String result = elevenValidate(phoneNumber);
jTextArea.setText("手機號碼 "+result+""+getCityUrl(phoneNumber));
} else {
jTextArea.setText("請輸入正確的電話號碼");
}
} else if (phoneNumber.length() == 3) {
jTextArea.setText(threeValidate(phoneNumber));
} else if (phoneNumber.length() == 5) {
jTextArea.setText(fiveValidate(phoneNumber));
}else if (phoneNumber.length() == 7||phoneNumber.length() == 8) {
jTextArea.setText(sevenAndEightValidate(phoneNumber));
} else if (phoneNumber.length() == 10) {
jTextArea.setText("服務電話號碼");
}else {
jTextArea.setText("請輸入正確的電話號碼");
}
} else {
jTextArea.setText("請輸入正確的電話號碼");
}
}else{
jTextArea.setText("請輸入字符爲數字的正確的電話號碼");
}
}
}
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
public String getCityUrl(String mobile) {
String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm";
StringBuilder sb = new StringBuilder(url);
Map<String, String> params = new HashMap<String, String>();
params.put("tel", mobile);
/* params.put("status","1");//固定值
params.put("modeltype", "7");//固定值*/
String result = GetPostUrl(sb.toString(), params, "GET",null, 0, 0);
return result;
}
public static String GetPostUrl(String sendUrl, Map<String, String> params, String sendType, String charset,
int repeat_request_count, int repeat_request_max_count) {
URL url = null;
HttpURLConnection httpurlconnection = null;
try {
// 構建請求參數
StringBuffer paramSb = new StringBuffer();
if (params != null) {
for (java.util.Map.Entry<String, String> e : params.entrySet()) {
paramSb.append(e.getKey());
paramSb.append("=");
// 將參數值urlEncode編碼,防止傳遞中亂碼
paramSb.append(URLEncoder.encode(e.getValue(), "UTF-8"));
paramSb.append("&");
}
paramSb.substring(0, paramSb.length() - 1);
}
url = new URL(sendUrl + "?" + paramSb.toString());
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestMethod("GET");
httpurlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpurlconnection.setDoInput(true);
httpurlconnection.setDoOutput(true);
// 設置http請求超時時間30000毫秒(30秒)
httpurlconnection.setConnectTimeout(30000);
httpurlconnection.setReadTimeout(30000);
httpurlconnection.setUseCaches(true);
int code = httpurlconnection.getResponseCode();
if (code == 200) {
DataInputStream in = new DataInputStream(httpurlconnection.getInputStream());
int len = in.available();
byte[] by = new byte[len];
in.readFully(by);
String rev = new String(by, "GBK");
in.close();
String arr=rev.toString().split("\t")[0];
String city=arr.split(",")[2].replace("catName","運營商")+arr.split(",")[1].replace("province","歸屬地");
return city;
} else {
// http 請求返回非 200狀態時處理
return "<?xml version=\"1.0\" encoding=\"utf-8\" ?><error>發送第三方請求失敗</error>";
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (httpurlconnection != null) {
httpurlconnection.disconnect();
}
}
return null;
}
public String sevenAndEightValidate(String phoneNumber){
String result = "座機號碼 ";
return result;
}
public String fiveValidate(String phoneNumber) {
String result = "服務電話號碼 ";
switch(phoneNumber){
case "12110":
result +="公安短信報警號碼";
break;
case "11185":
result +="郵政客戶服務電話";
break;
case "12348":
result +="全國法律服務熱線";
break;
case "12395":
result +="水上遇險求救電話";
break;
case "12121":
result +="氣象服務電話";
break;
case "12117":
result +="報時服務電話";
break;
case "95119":
result +="森林火警電話";
break;
case "12306":
result +="全國鐵路客服中心";
break;
case "95598":
result +="電力系統客服電話";
break;
case "12315":
result +="消費者投訴舉報專線電話";
break;
case "12365":
result +="質量監督電話";
break;
case "12369":
result +="環保局監督電話";
break;
case "12345":
result +="政府公益服務接入網";
break;
case "12318":
result +="文化市場統一舉報電話";
break;
case "12358":
result +="價格監督舉報電話";
break;
case "12310":
result +="機構編制違規舉報熱線";
break;
case "12333":
result +="民工維權熱線電話";
break;
case "12320":
result +="公共衛生環境投訴";
break;
case "10000":
result +="中國電信客戶服務熱線";
break;
case "10086":
result +="中國移動客服熱線";
break;
case "17911":
result +="中國聯通IP號碼";
break;
case "10050":
result +="鐵通客戶服務";
break;
case "10010":
result +="中國聯通客服熱線";
break;
case "17900":
result +="中國電信IP電話卡";
break;
case "17951":
result +="中國移動IP號碼";
break;
case "95555":
result +="招商銀行";
break;
case "95566":
result +="中國銀行";
break;
case "95533":
result +="建設銀行";
break;
case "95588":
result +="工商銀行";
break;
case "95558":
result +="中信銀行";
break;
case "95528":
result +="浦發銀行";
break;
case "95501":
result +="深發銀行";
break;
case "95599":
result +="農業銀行";
break;
case "95568":
result +="民生銀行";
break;
case "95595":
result +="光大銀行";
break;
case "95559":
result +="交通銀行";
break;
case "95508":
result +="廣發銀行";
break;
case "95577":
result +="華夏銀行";
break;
case "95561":
result +="興業銀行";
break;
case "95543":
result +="申通快遞";
break;
case "95546":
result +="韻達快遞";
break;
case "95311":
result +="中通快遞";
break;
case "95338":
result +="順豐速運";
break;
case "95554":
result +="圓通快遞";
break;
case "95353":
result +="德邦物流";
break;
case "95500":
result +="太平洋保險";
break;
case "95511":
result +="平安保險";
break;
case "95515":
result +="合衆人壽保險";
break;
case "95519":
result +="中國人壽保險";
break;
case "95522":
result +="合衆人壽保險";
break;
case "95567":
result +="新華人壽保險";
break;
case "95589":
result +="太平保險";
break;
case "95596":
result +="民生人壽保險";
break;
case "95510":
result +="陽光保險";
break;
case "95512":
result +="平安產險";
break;
case "95518":
result +="中國人民保險";
break;
case "95535":
result +="生命人壽保險";
break;
case "95585":
result +="中華保險";
break;
case "95590":
result +="大地保險";
break;
default:
result="請輸入正確的號碼";
}
return result;
}
public String threeValidate(String phoneNumber) {
String result = null;
switch(phoneNumber) {
case "110":
result = "緊急電話 報警求助電話";
break;
case "120":
result = "緊急電話 急救中心電話";
break;
case "119":
result = "緊急電話 火警報警電話";
break;
case "117":
result = "公共服務電話 報時服務電話";
break;
case "184":
result = "公共服務電話 國內郵政編碼查詢電話";
break;
case "122":
result = "緊急電話 交通事故報警電話";
break;
case "999":
result = "緊急電話 紅十字會急救臺";
break;
case "114":
result = "公共服務電話 電話及長途區號查詢";
break;
case "121":
result = "公共服務電話 天氣預報查詢號碼";
break;
default:
result = "請輸入正確號碼";
}
return result;
}
public String elevenValidate(String phoneNumber) {
String result = null;
String subResult = phoneNumber.substring(0, 3);
switch (subResult) {
case "133":
result = "中國電信";
break;
case "149":
result = "中國電信";
break;
case "153":
result = "中國電信";
break;
case "170":
String subString = phoneNumber.substring(0, 4);
switch(subString) {
case "1700":
result = "虛擬運營商 電信";
break;
case "1701":
result = "虛擬運營商 電信";
break;
case "1702":
result = "虛擬運營商 電信";
break;
case "1703":
result = "虛擬運營商 移動";
break;
case "1705":
result = "虛擬運營商 移動";
break;
case "1706":
result = "虛擬運營商 移動";
break;
case "1704":
result = "虛擬運營商 聯通";
break;
case "1707":
result = "虛擬運營商 聯通";
break;
case "1708":
result = "虛擬運營商 聯通";
break;
case "1709":
result = "虛擬運營商 聯通";
break;
default:
result = "中國電信";
break;
}
break;
case "173":
result = "中國電信";
break;
case "177":
result = "中國電信";
break;
case "180":
result = "中國電信";
break;
case "181":
result = "中國電信";
break;
case "189":
result = "中國電信";
break;
case "199":
result = "中國電信";
break;
case "130":
result = "中國聯通";
break;
case "131":
result = "中國聯通";
break;
case "132":
result = "中國聯通";
break;
case "145":
result = "中國聯通";
break;
case "155":
result = "中國聯通";
break;
case "156":
result = "中國聯通";
break;
case "166":
result = "中國聯通";
break;
case "171":
result = "虛擬運營商 聯通";
break;
case "175":
result = "中國聯通";
break;
case "176":
result = "中國聯通";
break;
case "185":
result = "中國聯通";
break;
case "186":
result = "中國聯通";
break;
case "134":
result = "中國移動";
break;
case "135":
result = "中國移動";
break;
case "136":
result = "中國移動";
break;
case "137":
result = "中國移動";
break;
case "138":
result = "中國移動";
break;
case "139":
result = "中國移動";
break;
case "147":
result = "中國移動";
break;
case "150":
result = "中國移動";
break;
case "151":
result = "中國移動";
break;
case "152":
result = "中國移動";
break;
case "157":
result = "中國移動";
break;
case "158":
result = "中國移動";
break;
case "159":
result = "中國移動";
break;
case "178":
result = "中國移動";
break;
case "182":
result = "中國移動";
break;
case "183":
result = "中國移動";
break;
case "184":
result = "中國移動";
break;
case "187":
result = "中國移動";
break;
case "188":
result = "中國移動";
break;
case "198":
result = "中國移動";
break;
}
return result;
}
public static void main(String[] s) {
new Phonenuber();
}
}