1、分析
需求:对护照、港澳通行证、台湾居民大陆通行证进行后台规则校验;
各证件类型的规则:
护照:
14/15开头 + 7位数字;
或G + 8位数字;
或P + 7位数字;
或S/D + 7或8位数字;
港澳通行证:
H或M开头,+10位或6位数字;
台湾居民大陆通行证:
8位数字或18位数字,或数字+英文字母(总计10位)
2、代码实现
所需java工具类:java.util.regex.Matcher和java.util.regex.Pattern
class utilforcard{
/**
*
* @param regex 正则字符串
* @param str 需要比较的字符串
* @return 比较结果 true 匹配 false 不匹配
*/
private static boolean match(String regex, String str) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
/**
* 证件校验
* @param cardnum 校验的证件的号码
* @param cardtype 证件类型
* @return 比较结果 true 匹配 false 不匹配
*/
public static boolean cardValidate(String cardnum,String cardtype){
String reg="";
switch (cardtype){
case "passport":
// 护照
reg="^1[45][0-9]{7}|^[P|S]\\d{7}|^[S|G]\\d{8}$";
break;
case "gapass":
// 港澳居民来往内地通行证
reg = "^[H|M]\\d{10}|^[H|M]\\d{6}$";
break;
case "twpass":
// 台湾居民来往大陆通行证
reg = "^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$";
break;
default:break;
}
return match(reg,cardnum);
}
}
3、总结
护照正则字符串:"^1[45][0-9]{7}|^[P|S]\\d{7}|^[S|G]\\d{8}$"
港澳居民来往内地通行证正则字符串:"^[H|M]\\d{10}|^[H|M]\\d{6}$"
台湾居民来往大陆通行证正则字符串:"^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$"