java(身份证号,手机号等)验证总结
验证
package com.dzqc.dz.main.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 验证
* @author Administrator
*
*/
public class J {
private static final byte MALE = 1;
private static final byte FAMALE = 0;
/**
* 检验身份证是否合法
* @return 1-合法;0-不合法
*/
public static int isLegal(String idcard){
if(idcard.length()<18) {
return 0;
}
int a = 0;
int sum = 0;
char checkBit[]={'1','0','X','9','8','7','6','5','4','3','2'};
int []add={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char []stringArr = idcard.toCharArray();
for (int i=0;i<17;i++){
sum +=add[i]*(stringArr[i]-'0');
}
if (stringArr[17]==checkBit[sum%11]){
a=1;
}
return a;
}
/**
* 判断性别
* @return 1-男;0-女;-1-错误;
*/
public static byte sex(String idcard){
if (isLegal(idcard)==1){
char []stringArr = idcard.toCharArray();
if (stringArr[17]%2==0){
return MALE;
}else{
return FAMALE;
}
}
return -1;
}
/**
* 输出年月日
* @return 年月日的字符串比如:20171207
*/
public static String year(String idcard){
String num=null;
if (isLegal(idcard)==1){
num = idcard.substring(6,14);
}
return num;
}
/**
* 判断字符串是否为空
* @param t
* @return
*/
public static boolean isNull(String t) {
if(t==null||"".equals(t)) {
return true;
}else {
return false;
}
}
/**
* 判断是否为纯数字
* @param t
* @return
*/
public static boolean isNum(String t) {
char ch;
t=t.trim();
for(int i=0,j=t.length();i<j;i++) {
ch=t.charAt(i);
if(!((ch>='0' && ch<='9'))) {
return false;
}
}
return true;
}
/**
* 判断是否含有数字
* @param t
* @return
*/
public static boolean haveNum(String t) {
char ch;
t=t.trim();
for(int i=0,j=t.length();i<j;i++) {
ch=t.charAt(i);
if(((ch>='0' && ch<='9'))) {
return true;
}
}
return false;
}
/**
* 验证手机号
* @param phone
* @return
*/
public static boolean isPhone(String phone) {
String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
if (phone.length() != 11) {
return false;
} else {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phone);
boolean isMatch = m.matches();
return isMatch;
}
}
}
银行卡验证:
/**
* 校验银行卡卡号
*/
public static boolean checkBankCard(String bankCard) {
if(bankCard.length() < 15 || bankCard.length() > 19) {
return false;
}
char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
if(bit == 'N'){
return false;
}
return bankCard.charAt(bankCard.length() - 1) == bit;
}
/**
* 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
* @param nonCheckCodeBankCard
* @return
*/
private static char getBankCardCheckCode(String nonCheckCodeBankCard){
if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0
|| !nonCheckCodeBankCard.matches("\\d+")) {
//如果传的不是数据返回N
return 'N';
}
char[] chs = nonCheckCodeBankCard.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');
}
评论区
请写下您的评论...
猜你喜欢
工具
1853
java正则表达式同时验证手机号或电话号码importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPhone
blog
java web图片验证码
工具
2309
javaweb图片验证码1.验证码的作用:防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方
ofc
信号量机制
official
1068
《操作系统》信号量机制的两种类型整形信号量记录型信号量复习回顾+思考:之前学习的这些进程互斥的解决方案分别存在哪些问题?进程互斥的四种软件实现方式(单标志法、双标志先检查、双标志后检查
框架
1294
/groupIdartifactIdkaptcha/artifactIdversion${kaptcha.version}/version/dependency生成验证码的配置类importcom.google
工具
2653
/versionclassifierjdk15/classifier/dependencydependency groupIdcom.aliyun/groupId artifactIdaliyun-java-sdk-core/
spring/springmvc
4358
我在之前进行接口开发的时候经常会有大量的参数验证,而我一般的操作方法就是在controller中进行参数的校验,这样并没有什么错,但是代码略显臃肿,而使用springboot的@vaild注解可以减
blog
rabbitmq开启http安全认证插件
rabbitmq
1538
登录auth_http.vhost_path验证虚拟主机权限auth_http.resource_path校验使用资源权限(交换机,队列)auth_http.topic_path检查主题是否可以订阅
blog
使用openssl生成crt证书
搜索
922
OpenSSL3.1.014Mar2023(Library:OpenSSL3.1.014Mar2023)
创建证书密钥文件server.keyD:\tmp\sslopensslgenrsa-des3
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。