编写一段java代码使用Luhn算法校验手机号是否合法
时间: 2024-02-21 10:33:39 浏览: 71
下面是使用Luhn算法校验手机号是否合法的Java代码:
```
public boolean isPhoneNumberValid(String phoneNumber) {
String digitsOnly = phoneNumber.replaceAll("[^0-9]", ""); // 去掉手机号中的非数字字符
int sum = 0;
boolean isOdd = true;
for (int i = digitsOnly.length() - 1; i >= 0; i--) {
int digit = Integer.parseInt(digitsOnly.substring(i, i + 1));
if (isOdd) {
sum += digit;
} else {
sum += digit < 5 ? digit * 2 : digit * 2 - 9;
}
isOdd = !isOdd;
}
return sum % 10 == 0;
}
```
该方法会返回一个布尔值,指示给定的手机号是否合法。如果返回值为 true,表示手机号是合法的。如果返回值为 false,则该手机号无效。
相关问题
验证身份证号、手机号、做记号格式是否正确代码
验证身份证号、手机号码以及特定格式的数据通常需要使用正则表达式来进行。这里提供一些基本的Python代码示例:
1. **身份证号码验证** (中国大陆18位数字,加最后一位校验码):
```python
import re
def check_id(id_num):
id_pattern = r'^\d{15}(?:\d|X|x)$'
if not re.match(id_pattern, id_num):
return False
# 校验码计算部分省略,实际应用中可以参考国家标准GB17896
# 例如 Luhn算法
return True
# 使用示例
id_to_check = "123456789012345678"
if check_id(id_to_check):
print("身份证号码格式正确")
else:
print("身份证号码格式错误")
```
2. **手机号码验证** (中国大陆11位号码,格式如13812345678):
```python
def check_phone(phone):
phone_pattern = r'^1[3-9]\d{9}$'
if not re.match(phone_pattern, phone):
return False
return True
phone_to_check = "13812345678"
if check_phone(phone_to_check):
print("手机号码格式正确")
else:
print("手机号码格式错误")
```
对于“做记号”这个不太明确的概念,如果是指文本中特定字符或模式的查找,可以类似处理。如果想确认某个字符串是否包含特定格式的标记(如HTML标签),也可以编写相应的正则表达式。
阅读全文