正则表达式
/**
* 判断日期格式是否正确
* @param signTime 日期
* @return 若格式正确,则返回true,若不正确则返回false
*/
public boolean matcherTime(String signTime) {
Pattern p = Pattern
.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3
[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][013457
89]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-
\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s((([0-1][0-9]
)|(2?[0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?{1}$");
Matcher m = p.matcher(signTime);
return m.find();
}
/**
* 身份证格式校验
* @param IdCard 身份证号码
* @return 若格式正确,则返回true,若不正确则返回false
*/
public boolean matcherIdCard(String IdCard) {
Pattern p = Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{4}{1}$");
Matcher m = p.matcher(IdCard);
return m.find();
}
/**
* 匹配身份证(Java版)
* @param passport 身份证号
* @return 若身份证合法,则返回true否则返回false
*/
public static boolean testPassport(String passport){
HashMap<String,String> map=new HashMap<String,String>();
map.put("11", "北京");
map.put("12", "天津");
map.put("13", "河北");
map.put("14", "山西");
map.put("15", "内蒙古");
map.put("21", "辽宁");
map.put("22", "吉林");
map.put("23", "黑龙江");
map.put("31", "上海");
map.put("32", "江苏");
map.put("33", "浙江");
map.put("34", "安徽");
map.put("35", "福建");
map.put("36", "江西");
map.put("37", "山东");
map.put("41", "河南");
map.put("42", "湖北");
map.put("43", "湖南");
map.put("44", "广东");
map.put("45", "广西");
map.put("46", "海南");
map.put("50", "重庆");
map.put("51", "四川");
map.put("52", "贵州");
map.put("53", "云南");
map.put("54", "西藏");
map.put("61", "陕西");
map.put("62", "甘肃");
map.put("63", "青海");
map.put("64", "宁夏");
map.put("65", "新疆");
map.put("71", "台湾");
map.put("81", "香港");
map.put("82", "澳门");
map.put("91", "国外");
String regex="^\\d{17}(\\d|x)$";
if (!Pattern.matches(regex,passport)) {
System.out.println("不符合规范");
return false;
}
if (map.get(passport.substring(0, 2)) == null) {
System.out.println("省份错误");
return false;
}
String sBirthday = passport.substring(6, 10) + "-" + passport.substring(10, 12) + "-"
+ passport.substring(12, 14);
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
if(df.format(df.parse(sBirthday))==null||!df.format(df.parse(sBirthday)).equals(sBirthday)){
System.out.println("出生日期错误");
return false;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("出生日期错误");
return false;
}
regex="x$";
Pattern p=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(passport);
passport=m.replaceAll("a");
int iSum=0;
for ( int i = 17; i >= 0; i--)
iSum += ((int)Math.pow(2, i) % 11) * Integer.valueOf(String.valueOf(passport.charAt(17 - i)), 11);
if (iSum % 11 != 1) {
System.out.println("尾数错误");
return false;
}
return true;
}
/**
* 联系电话格式校验
* @param phone 联系电话号码
* @return 若格式正确,则返回true,若不正确则返回false
*/
public boolean matcherPhone(String phone) {
Pattern p = Pattern.compile("(^(\\d{2,4}[-_-—]?)?\\d{3,8}([-_-—]?\\d{3,8})?([-_-—]?\\d{1,7})?$)|(^0?1[35]\\d{9}$)");
Matcher m = p.matcher(phone);
return m.find();
}
/**
* 判断编号是否为数字
* @param id 编号
* @return 若为数字,则返回true,若不正确则返回false
*/
public boolean matcherId(String id) {
Pattern p = Pattern.compile("^[1-9][0-9]*{1}$");
Matcher m = p.matcher(id);
return m.find();
}
/**
* 去除字符串中重复出现的字符
* @param str 字符串
* @return 返回没有重复的字符串
*/
public static String cutWord(String str) {
String s = str;
s = str.replaceAll("(?s)(.)(?=.*\\1)", "");
return s;
}