在Java中,有時需要對身份證號碼和姓名進行區(qū)分??梢酝ㄟ^以下方法實現(xiàn):
/** * 判斷身份證號碼是否合法 * @param idCard 身份證號碼 * @return 合法返回true,否則返回false */ public static boolean isIdCard(String idCard) { // 身份證正則表達式 String regex = "[1-9]\\d{5}((19\\d{2})|(20([0-1][0-9]|2[0-9])))(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\d{3}[0-9Xx]"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(idCard); return matcher.matches(); } /** * 判斷姓名是否合法 * @param name 姓名 * @return 合法返回true,否則返回false */ public static boolean isName(String name) { // 姓名正則表達式,支持中英文 String regex = "^[\\u4e00-\\u9fa5]+(·[\\u4e00-\\u9fa5]+)*$|^[a-zA-Z\\\\s]+[a-zA-Z]$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(name); return matcher.matches(); }
這里用到了Java中的正則表達式功能,可以用來判斷字符串是否符合某種模式。使用正則表達式需要先編譯為Pattern,再在該Pattern上使用對應的Matcher。
對于身份證號碼,需要滿足國標規(guī)范,既長度為18位,前17位為數(shù)字,最后一位為數(shù)字或字母X。這里使用了正則表達式來判斷是否合法。
對于姓名,一般只包含中文或英文字符,不含數(shù)字和特殊字符。這里使用了正則表達式來判斷是否合法。