校验身份证合法性(18位与15位互转)

身份证15位与18位互转

最近在做一项目,用户可能用的是18位身份证号查询信息,但是登记的时候用的是15位身份证号登记的 ,想了好久最终,想到在后台获取到身份证号,通过工具类转化,18位转15位,这样取到两种身份证号,传到数据库用 OR 条件拼接就好了
package com.until;
/**
 * 15位及18位身份证互转类
 * @author 
 * @date 2020/07/20
 *
 */
public class IDCardUtil {
	private IDCardUtil(){
		//todo
	}
	/**
	 * 15位身份证转18位
	 * @param idCard
	 * @return
	 */
	//15位转18位的,需要一个15位的身份证号参数
	public static String getIdCardfrom15to18(String idCard15){
		 StringBuffer idCard18 = new StringBuffer(idCard15);
		  // 校验码值
		  char[] checkBit = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3',
		    '2' };
		  int sum = 0;
		  
		  if(idCard15.length() != 15){
			  throw new RuntimeException("the length of idcard is not 15");
		  }
		  idCard18.insert(6, "19");
		  for(int  i = 0; i < idCard18.length(); i++){
			  char c = idCard18.charAt(i);
			  int num = c - '0';
			  //获取当前权重
			  int weight = (int)(Math.pow(2, idCard18.length() - i)) % 11;
			  sum += num * weight;
		  }
		  //sum求模
		  int index = sum % 11;
		  //append校验码
		  idCard18.append(checkBit[index]);
		return idCard18.toString() ;
	}
	//18位转15位的,需要一个18位的身份证号参数
	public static String  getIdCardfrom18to15(String idCard18){
		StringBuffer idCard15 = new StringBuffer(idCard18);
		 if(idCard15.length() != 18){
			  throw new RuntimeException("the length of idcard is not 18");
		  }
		idCard15.delete(17, 18);
		idCard15.delete(6, 8);
		return idCard15.toString();
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Element UI 的表单校验功能来验证身份证合法性。你可以通过在表单项的 `rules` 属性中定义自定义校验规则来实现。下面是一个示例代码: ```html <template> <el-form :model="form" label-width="80px"> <el-form-item label="身份证号码" prop="idCard"> <el-input v-model="form.idCard"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { idCard: '' } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 // ... } else { // 表单验证失败 return false; } }); } }, mounted() { this.$refs.form.resetFields(); } }; </script> ``` 然后,你需要在自定义校验规则中添加身份证验证的逻辑。可以使用正则表达式或其他方法进行验证。以下是一个使用正则表达式验证身份证号码的示例: ```javascript import { validateIdCard } from '@/utils/validator'; // 导入自定义的身份证验证函数 export default { data() { return { form: { idCard: '' }, rules: { idCard: [ { required: true, message: '请输入身份证号码', trigger: 'blur' }, { validator: validateIdCard, trigger: 'blur' } ] } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 // ... } else { // 表单验证失败 return false; } }); } }, mounted() { this.$refs.form.resetFields(); } }; ``` 在上面的代码中,`validateIdCard` 是一个自定义的验证函数,你可以根据自己的需求来实现。该函数接收一个参数(即输入的身份证号码),并返回一个布尔值表示是否通过验证。在 `rules` 中使用 `{ validator: validateIdCard, trigger: 'blur' }` 的方式来添加自定义校验规则。 请注意,这只是一个示例,你需要根据具体的业务需求和正则表达式来实现身份证合法性校验

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值