新聞中心
JAVA寫一個(gè)程序,要求輸入身份證號(hào)獲取所在地區(qū)代碼也就是前六位,和出生年月。
import?java.util.*;
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都做網(wǎng)站、雙牌網(wǎng)絡(luò)推廣、成都微信小程序、雙牌網(wǎng)絡(luò)營銷、雙牌企業(yè)策劃、雙牌品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供雙牌建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
public?class?Yugi{
public?static?void?main(String[]?args){
Scanner?scan?=?new?Scanner(System.in);
System.out.println("輸入身份證號(hào)碼:?");
String?code?=?scan.nextLine().trim();
scan.close();
String?reg?=?"^(.{6})(.{4})(.{2}).*$";
String?a?=?code.replaceAll(reg,?"$1");
String?y?=?code.replaceAll(reg,?"$2");
String?m?=?code.replaceAll(reg,?"$3");
System.out.println("所在地區(qū)代碼:"?+?a);
System.out.println("出生年月:?"?+?y?+?",?"?+?m);
}
}
Java-18位身份證號(hào)的正則表達(dá)式。幫忙拆一下代碼。
^ 匹配字符串的開始
[1-9] 第1位:1-9
\d{5} 第2-6位:0-9
[1-9] 第7位:1-9
\d{3} 第8-10位:0-9
((0\d)|(1[0-2])):
第11-12位:(00-09)或(10-12)
(([0|1|2]\d)|3[0-1])
第13-14位:(00-29)或(30-31)
\d{3} 第15-17位:0-9
([0-9]|X)
第18位:0-9或X
$ 匹配字符串的結(jié)束
用java寫一個(gè)方法,轉(zhuǎn)入一個(gè)身份證號(hào),判斷該身份證末位是否合法
/**
* 功能:身份證的有效驗(yàn)證
*
* @param IDStr 身份證號(hào)
* @return 有效:返回"" 無效:返回String信息
* @throws NumberFormatException
* @throws ParseException
*/
public static String IDCardValidate(String IDStr) {
String errorInfo = "";// 記錄錯(cuò)誤信息
String[] ValCodeArr = { "1", "0", "x", "9", "8", "7", "6", "5", "4",
"3", "2" };
String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",
"9", "10", "5", "8", "4", "2" };
String Ai = "";
// ================ 號(hào)碼的長度 15位或18位 ================
if (IDStr.length() != 15 IDStr.length() != 18) {
errorInfo = "身份證號(hào)碼長度應(yīng)該為15位或18位。";
return errorInfo;
}
// =======================(end)========================
// ================ 數(shù)字 除最后以為都為數(shù)字 ================
if (IDStr.length() == 18) {
Ai = IDStr.substring(0, 17);
} else if (IDStr.length() == 15) {
Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);
}
if (isNumeric(Ai) == false) {
errorInfo = "身份證15位號(hào)碼都應(yīng)為數(shù)字 ; 18位號(hào)碼除最后一位外,都應(yīng)為數(shù)字。";
return errorInfo;
}
// =======================(end)========================
// ================ 出生年月是否有效 ================
String strYear = Ai.substring(6, 10);// 年份
String strMonth = Ai.substring(10, 12);// 月份
String strDay = Ai.substring(12, 14);// 月份
if (isDataFormat(strYear + "-" + strMonth + "-" + strDay) == false) {
errorInfo = "身份證生日無效。";
return errorInfo;
}
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
try {
if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) 150
|| (gc.getTime().getTime() - s.parse(
strYear + "-" + strMonth + "-" + strDay).getTime()) 0) {
errorInfo = "身份證生日不在有效范圍。";
return errorInfo;
}
} catch (NumberFormatException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
return errorInfo = "身份證生日無效";
} catch (ParseException e) {
// TODO 自動(dòng)生成的 catch 塊
e.printStackTrace();
return errorInfo = "身份證生日無效";
}
if (Integer.parseInt(strMonth) 12 || Integer.parseInt(strMonth) == 0) {
errorInfo = "身份證月份無效";
return errorInfo;
}
if (Integer.parseInt(strDay) 31 || Integer.parseInt(strDay) == 0) {
errorInfo = "身份證日期無效";
return errorInfo;
}
// =====================(end)=====================
// ================ 地區(qū)碼時(shí)候有效 ================
Hashtable h = GetAreaCode();
if (h.get(Ai.substring(0, 2)) == null) {
errorInfo = "身份證地區(qū)編碼錯(cuò)誤。";
return errorInfo;
}
// ==============================================
// ================ 判斷最后一位的值 ================
int TotalmulAiWi = 0;
for (int i = 0; i 17; i++) {
TotalmulAiWi = TotalmulAiWi
+ Integer.parseInt(String.valueOf(Ai.charAt(i)))
* Integer.parseInt(Wi[i]);
}
int modValue = TotalmulAiWi % 11;
String strVerifyCode = ValCodeArr[modValue];
Ai = Ai + strVerifyCode;
if (IDStr.length() == 18) {
if (Ai.equals(IDStr) == false) {
errorInfo = "身份證無效,不是合法的身份證號(hào)碼";
return errorInfo;
}
} else {
return "";
}
// =====================(end)=====================
return "";
}
身份證號(hào)碼的地區(qū)代碼分別是什么?
身份證號(hào)碼的地區(qū)代碼分別是:
1、東北地區(qū): 遼寧省|210000,吉林省|220000,黑龍江省|230000,
2、華北地區(qū):北京市|110000,天津市|120000,河北省|130000,山西省|140000,內(nèi)蒙古自治區(qū)|150000,
3、華東地區(qū): 上海市|310000,江蘇省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山東省|370000,
4、華南地區(qū):廣東省|440000,廣西壯族自治區(qū)|450000,海南省|460000,
5、華中地區(qū): 河南省|410000,湖北省|420000,湖南省|430000,
6、西北地區(qū): 陜西省|610000,甘肅省|620000,青海省|630000,寧夏回族自治區(qū)|640000,新疆維吾爾自治區(qū)|650000,
7、西南地區(qū): 四川省|510000,貴州省|520000,云南省|530000,西藏自治區(qū)|540000,重慶市|500000;
8、特別地區(qū):臺(tái)灣地區(qū)(886)|710000,香港特別行政區(qū)(852)|810000,澳門特別行政區(qū)(853)|820000。
擴(kuò)展資料:
一、身份證號(hào)碼是我國為每個(gè)公民從出生之日起編定的唯一的、終身不變的身份代碼,也是證明持有人身份的唯一證件。
1、前1、2位數(shù)字表示:所在省份的代碼;
2、第3、4位數(shù)字表示:所在城市的代碼;
3、第5、6位數(shù)字表示:所在區(qū)縣的代碼;
4、第7~14位數(shù)字表示:出生年、月、日;
5、第15、16位數(shù)字表示:所在地的派出所的代碼;
6、第17位數(shù)字表示性別:奇數(shù)表示男性,偶數(shù)表示女性;
7、第18位數(shù)字是校檢碼:用來檢驗(yàn)身份證的正確性。校檢碼可以是0~10的數(shù)字,10用x表示。
二、一些人的尾號(hào)變成了X,這部分人在工作生活中,例如去銀行存取錢、去汽車公司租賃汽車或者報(bào)名參加考試等等過程中,往往不被檢驗(yàn)者理解,認(rèn)為是假身份證,這樣的誤會(huì)給很多人的生活帶來不便。X的意思其實(shí)是10,只不過用羅馬數(shù)字代替了而已,如果不用羅馬數(shù)字代替的話,那么身份證號(hào)將會(huì)變成19位數(shù)了。
參考資料:百度百科_居民身份證號(hào)碼
文章名稱:java+身份證區(qū)域代碼 java身份證號(hào)碼
分享URL:http://www.dlmjj.cn/article/dogosoi.html