Android中驗證姓名、身份證、銀行卡、手機號(正則表示式校驗)
阿新 • • 發佈:2019-01-26
最近專案中遇到驗證銀行卡號的問題,就查了一下,也總結總結,後期如果發現其他資訊驗證的會補上的。
1.驗證輸入的身份證號是否正確
public static boolean isLegalId(String id) { if (id.toUpperCase().matches("(^\\d{15}$)|(^\\d{17}([0-9]|X)$)")) { return true; } else { ToastUtil.show("輸入的身份證號不合法"); return false; } }
2. 驗證輸入的手機號是否正確
public static boolean isMobileNO(String mobiles) {
Pattern p = Pattern
.compile("^((13[0-9])|(15[^4,\\D])|(18[0,3,5-9]))\\d{8}$");
Matcher m = p.matcher(mobiles);
return m.matches();
}
3. 驗證輸入的郵箱是否正確
public static boolean checkEmail(String email) { boolean flag = false; try { String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; Pattern regex = Pattern.compile(check); Matcher matcher = regex.matcher(email); flag = matcher.matches(); } catch (Exception e) { flag = false; } return flag; }
4. 驗證輸入的名字是否為“中文”或者是否包含“.”
public static boolean isLegalName(String name, String hint) { if (name.contains("·") || name.contains("•")) { if (name.matches("^[\\u4e00-\\u9fa5]+[·•][\\u4e00-\\u9fa5]+$")) { return true; } else { ToastUtil.show(hint); return false; } } else { if (name.matches("^[\\u4e00-\\u9fa5]+$")) { return true; } else { ToastUtil.show(hint); return false; } } }
5.驗證輸入的銀行卡號是否正確
//驗證銀行卡號
public static boolean checkBankCard(String cardId) {
char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));
if (bit == 'N') {
return false;
}
return cardId.charAt(cardId.length() - 1) == bit;
}
//從不含校驗位的銀行卡卡號採用 Luhm 校驗演算法獲得校驗位
public static char getBankCardCheckCode(String nonCheckCodeCardId) {
if (nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0
|| !nonCheckCodeCardId.matches("\\d+")) {
//如果傳的不是資料返回N
return 'N';
}
char[] chs = nonCheckCodeCardId.trim().toCharArray();
int luhmSum = 0;
for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
int k = chs[i] - '0';
if (j % 2 == 0) {
k *= 2;
k = k / 10 + k % 10;
}
luhmSum += k;
}
return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');
}