java编程。1 校验身份证号码(18位) 要求: 以自己所在的省份,城市,区县不管 校验与自己出生年月一致的异性的身份证号码 2 校验邮箱地址 要求: 邮箱地址@前是自己名字的拼音写法("xie wu yang" —> wu.yang.xie), @后qq.com或者是163.com
时间: 2023-02-27 12:58:12 浏览: 61
1. 校验身份证号码:
为了校验身份证号码是否合法,您需要对该号码进行以下检查:
- 确保该号码是18位。
- 确保生日信息与该异性出生年月一致。
2. 校验邮箱地址:
为了校验邮箱地址是否合法,您需要对该地址进行以下检查:
- 确保邮箱地址的@前是您名字的拼音写法(例如:"谢武阳" -> "wu.yang.xie")。
- 确保邮箱地址@后是"qq.com"或"163.com"。
相关问题
用java语言编写一个程序。要求如下:1 校验身份证号码(18位) 要求: 以自己所在的省份,城市,区县不管 校验与自己出生年月一致的异性的身份证号码 2 校验邮箱地址 要求: 邮箱地址@前是自己名字的拼音写法("xie wu yang" —> wu.yang.xie), @后qq.com或者是163.com
下面是一份示例代码:
```
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
private static final String ID_CARD_REGEX = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
private static final String EMAIL_REGEX = "^[a-z]+\\.[a-z]+\\.[a-z]+@(qq|163)\\.com$";
public static boolean checkIdCard(String idCard) {
return Pattern.matches(ID_CARD_REGEX, idCard);
}
public static boolean checkEmail(String email) {
return Pattern.matches(EMAIL_REGEX, email);
}
public static void main(String[] args) {
String idCard = "421024199404080516";
System.out.println(checkIdCard(idCard)); // true
String email = "wu.yang.xie@qq.com";
System.out.println(checkEmail(email)); // true
}
}
```
上面的代码实现了两个方法:一个校验身份证号码,一个校验邮箱地址。具体的,在身份证号码的校验中,使用了正则表达式来确保身份证号码符合要求。在邮箱地址的校验中,同样使用了正则表达式来确保邮箱地址符合要求。最后,通过调用这两个方法来验证一个身份证号码和一个邮箱地址是否符合要求。
用java校验18位身份证号码
以下是Java代码,用于校验18位身份证号码:
```
public static boolean checkIdNumber(String idNumber) {
// 18位身份证号码正则表达式,符合GB11643-1999标准
String regex = "^[1-9]\\d{5}(19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
// 判断身份证号码是否为空或不符合正则表达式
if (idNumber == null || !idNumber.matches(regex)) {
return false;
}
// 判断身份证号码的最后一位校验码是否正确
int[] factors = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; // 加权因子
char[] checkCodes = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; // 校验码
int sum = 0; // 加权和
for (int i = 0; i < 17; i++) {
int digit = Character.getNumericValue(idNumber.charAt(i)); // 获取身份证号码各位数字
sum += digit * factors[i]; // 计算加权和
}
int remainder = sum % 11; // 取模
char checkCode = checkCodes[remainder]; // 获取校验码
return (idNumber.charAt(17) == checkCode || idNumber.charAt(17) == Character.toUpperCase(checkCode)); // 判断校验码是否正确
}
```
该方法的返回值为`true`表示身份证号码正确,返回值为`false`表示身份证号码不正确。