码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式判断

时间:2020-09-09 18:49:03      阅读:33      评论:0      收藏:0      [点我收藏+]

标签:span   @param   身份证   年龄   假设   正则表达式   ret   日期   length   

/**
* 根据身份证号获取性别
* @param IDCard
* @return
*/
public static String getSex(String IDCard){
String sex ="";
if (StringUtils.isNotBlank(IDCard)){
// 判断性别
if (Integer.parseInt(IDCard.substring(16).substring(0, 1)) % 2 == 0) {
sex = "2";
} else {
sex = "1";
}
}

return sex;
}

/**
* 获取出生日期 yyyyMMdd
* @param IDCard
* @return
*/
public static String getBirthday(String IDCard){
String birthday="";
String year="";
String month="";
String day="";
if (StringUtils.isNotBlank(IDCard)){
// 身份证上的年份
year = IDCard.substring(6).substring(0, 4);
// 身份证上的月份
month = IDCard.substring(10).substring(0, 2);
//身份证上的日期
day=IDCard.substring(12).substring(0,2);

birthday=year+month+day;
}
return birthday;
}

/**
* 判断身份证号
* @param IDNumber
* @return
*/
public static boolean isIDNumber(String IDNumber) {
if (IDNumber == null || "".equals(IDNumber)) {
return false;
}
// 定义判别用户身份证号的正则表达式(18位,最后一位可以为字母)
String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9X]$)";
//假设18位身份证号码:41000119910101123X 410001 19910101 123X
//^开头
//[1-9] 第一位1-9中的一个 4
//\\d{5} 五位数字 10001(前六位省市县地区)
//(18|19|20) 19(现阶段可能取值范围18xx-20xx年)
//\\d{2} 91(年份)
//((0[1-9])|(10|11|12)) 01(月份)
//(([0-2][1-9])|10|20|30|31)01(日期)
//\\d{3} 三位数字 123(第十七位奇数代表男,偶数代表女)
//[0-9Xx] 0123456789Xx其中的一个 X(第十八位为校验值)
//$结尾
boolean matches = IDNumber.matches(regularExpression);
return matches;
}

/**
* 判断出生年月日
* @param nyr
* @return
*/
public static boolean isCsnyr(String nyr) {
if (nyr == null || "".equals(nyr)) {
return false;
}
// 定义判别判断出生年月日 yyyymmdd
String eL = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)";
boolean matches = nyr.matches(eL);
return matches;
}


/**
* 根据身份证号计算年龄
* @param IdNO
* @return
*/
public static int IdNOToAge(String IdNO,String aae001){
int leh = IdNO.length();
String dates="";
if (leh == 18) {
dates = IdNO.substring(6, 10);
int u=Integer.parseInt(aae001)-Integer.parseInt(dates);
return u;
}else{
dates = IdNO.substring(6, 8);
return Integer.parseInt(dates);
}

}

正则表达式判断

标签:span   @param   身份证   年龄   假设   正则表达式   ret   日期   length   

原文地址:https://www.cnblogs.com/xiaoyuer1229/p/13580291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!