实现营业执照注册号校验
简单的了解营业执照注册号,注册号是有15位数字组成。简单的认识一下15数字的含义:代码结构工商注册号由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码,1位数字校验码组成。
具体详情请点击:工商行政管理注册号编码规则
具体的校验代码实现如下:
/*** 15位营业执照注册号检验工具*/
public class BusinessUtils {public static String ERROR_COMMON = "您输入的营业执照注册号%s,请核对后再输!";/*** 校验15位的营业执照注册号** @param businessLicense* @return*/public static String isBusinesslicense15(String businessLicense) {String result = "";if ("".equals(businessLicense) || " ".equals(businessLicense)) {result = String.format(ERROR_COMMON,"为空");} else if (businessLicense.length() != 15) {result = String.format(ERROR_COMMON,"位数有误");}else if (isBusinessLicense(businessLicense)) {// 传入15位 只校验营业执照的有效性推荐用这个result = "true";}else {result = String.format(ERROR_COMMON,"有误");}return result;}/*** 获取 营业执照注册号的校验码** @param businessLicense 为15为返回1为有效,否则无效;传入14为则会计算出第15位的校验码。* @return*/private static int getCheckCode(String businessLicense, boolean getCheckCode) {int result = -1;if (null == businessLicense || businessLicense.trim().equals("")|| businessLicense.length() != 15) {return result;}else{int ti = 0;int si = 0; // pi|11+tiint cj = 0; // (si||10==0?10:si||10)*2int pj = 10; // pj=cj|11==0?10:cj|11for (int i = 0; i < businessLicense.length(); i++) {ti = Integer.parseInt(businessLicense.substring(i,i+1));si = pj + ti;cj = (0 == si % 10 ? 10 : si % 10) * 2;pj = (cj % 11) == 0 ? 10 : (cj % 11);if (i == businessLicense.length()-2 && getCheckCode) {result = (1 - pj < 0 ? 11 - pj : 1 - pj) % 10;// 返回营业执照注册号的校验码return result;}if (i == businessLicense.length()-1) {result = si % 10; // 返回1 表示是一个有效营业执照号}
// System.out.println(i + " ti=" + ti + ", si=" + si + ", cj=" + cj + ", pj=" + pj);}}return result;}private static boolean isBusinessLicense(String businessLicense) {return 1 == getCheckCode(businessLicense, false);}/**** @param businessLicense* @return*/public static int getComputeCheckCode(String businessLicense){return getCheckCode(businessLicense,true);}
}
测试:
@Test // 如下测试营业执照百度的15位:public void testRegexBusiness() {String[] test = {// 有效数据"310117003171688", "330282602082220", "430524600099555","350205200033663", "320507000045918", "440301104041144","440307811872564", "130903000004802", "370125200024527","330225000051892", "340100000400528", "445381600190918","441900001868015", "310230000419464", "440301103072002","320483000067847", "110108000000016", "320300000174110",// 错误测试数据"320483000067848", "32048300006784", "3204830000678481", ""};for (int i = 0; i < test.length; i++) {String temp = test[i];System.out.println(temp + " 校验码:" + BusinessUtils.getComputeCheckCode(temp) + " " + BusinessUtils.isBusinesslicense15(temp));}}
测试结果:
310117003171688 校验码:8 true
330282602082220 校验码:0 true
430524600099555 校验码:5 true
350205200033663 校验码:3 true
320507000045918 校验码:8 true
440301104041144 校验码:4 true
440307811872564 校验码:4 true
130903000004802 校验码:2 true
370125200024527 校验码:7 true
330225000051892 校验码:2 true
340100000400528 校验码:8 true
445381600190918 校验码:8 true
441900001868015 校验码:5 true
310230000419464 校验码:4 true
440301103072002 校验码:2 true
320483000067847 校验码:7 true
110108000000016 校验码:6 true
320300000174110 校验码:0 true
320483000067848 校验码:7 您输入的营业执照注册号有误,请核对后再输!
32048300006784 校验码:-1 您输入的营业执照注册号位数有误,请核对后再输!
3204830000678481 校验码:-1 您输入的营业执照注册号位数有误,请核对后再输!校验码:-1 您输入的营业执照注册号为空,请核对后再输!
实现营业执照注册号校验相关推荐
- 统一社会信用代码=营业执照注册号 + 营业执照注册号+营业执照注册号
1.统一社会信用代码(新版营业执照号): 新版营业执照右上方标记统一社会信用代码,由18位数字组成. 18位数字与字母组合 2.营业执照注册号: 15位数字 3.组织机构代码: 8位数字+" ...
- 营业执照注册编码 15与18位的java实现
public class LicenseNumberRegexUtil {private static final Log logger = LogFactory.getLog(LicenseNumb ...
- 区分统一社会信用代码、组织机构代码、注册号
区分统一社会信用代码.组织机构代码.注册号 背景 2015年6月4日,国务院常务会议决定实施法人和其他组织统一社会信用代码制度,提升社会运行效率和信用.法人和其他组织统一社会信用代码相当于让法人和其他 ...
- 航班号校验正则表达式
大小写检验自行添加或修改 国内航司二字码校验(忽略大小写): 存在如: 8L 3U 以数字开头的航司 需要支持以数字开头 ^^([A-Za-z\d][A-Za-z]) 国内机尾号(飞机注册号): 这里 ...
- 正则表达式训练-QQ号校验
7-1 正则表达式训练-QQ号校验 分数 5 作者 段喜龙 单位 南昌航空大学 校验键盘输入的 QQ 号是否合格,判定合格的条件如下: 要求必须是 5-15 位: 0 不能开头: 必须都是数字: 输入 ...
- 正则表达式 企业统一社会信用代码、企业13位工商注册号、企业组织机构代码...
企业统一社会信用代码 允许格式: 0123456789012 || 0123456789012-12 /[0-9]{13}$|[0-9]{13}-[0-9]{2}$/ 企业13位工商注册号: 允许 ...
- C语言基础入门48篇_26_身份证号校验程序(以身份证的校验方式是实例加深对数组及函数封装的理解、字符-‘0‘得到字符对应的int类型数字)
本篇根据以二代身份证的校验方式是实例加深对数组及函数封装的理解 1. 第二代身份证号的组成 第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右): AABBCCYYYYMMDDXXXV ...
- 用Python进行身份证号校验
在日常应用中,经常需要输入身份证号,因为号码较长容易录错,因此需要进行实时校验,以尽可能保证输入正确.以下以Python为例,浅聊身份证号码校验的方法. 首先我们需要了解身份证号各个号段的意义.身份证 ...
- Java身份证号校验
面向百度编程 package com.sinosoft.lf.util.common;import java.text.SimpleDateFormat; import java.util.Date; ...
- 天猫店申请:申请的品牌名与注册号对应的商标名不匹配
今天在申请天猫店,品牌不是商标官方邀请,需要自己添加商标. 在自己添加商标的时候发现,申请的品牌名与注册号对应的商标名不匹配,无论如何都不能提交成功. 这可是大事情,第一步就被天猫拒之门外. 下面是我 ...
最新文章
- 人体姿态估计研究文集
- MSSQL中的随机函数
- html中设置td中内容的垂直位置
- 乐视欠122亿的图标给后浪的启示
- android普通权限说明,Android权限说明.doc
- WireShark抓DNS请求和回复数据报的分析
- 机器学习笔记(十):机器学习系统的设计
- 信息学奥赛一本通(1409:判决素数个数)
- 电脑发短信_让电脑自动给老婆发短信?!这个懒到极致的大神,我是服了...
- 实体首部字段-四大首部字段之一
- 《巴菲特的第一桶金》读书笔记
- SubType.prototype.constructor = SubType原因
- 计算机时间校对更改原因,计算机时间校准方法
- python 定时发送微信,利用python在微信中实现一个定时发送消息的功能
- 【apache lang3】import org.apache.commons.lang3.StringUtils error----Cannot resolve symbol ‘lang3‘
- 记一次网络故障排除:nat虚拟机不能ping外网 浏览器可以上网
- 小白深度学习起步中——读取人像图像
- 渐变多彩创意双十二活动方案主题PPT
- 1.3、操作系统的发展和分类
- moviepy第2天|对视频添加圆圈渐变大小的结尾及文字
热门文章
- 彻底理解Linux的各种终端类型以及概念
- ADA程序实例(面向对象特性之多态)
- GIT--使用流程规范
- [...ServerPropertiesAutoConfiguration.class] cannot be opened because it does not exist
- 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 C:计算几何
- WMS(仓库管理系统)
- 代码随想录第六天 LeetCode 242、349、202、1 (哈希表)
- JS 移动端网页特效(一)
- DAZ Studio 4—3D动画制作工具
- Angular 2 升级到 Angular 5