企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
2009-01-14 14:23
567 查看
组织机构代码验证规则:
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1位数字(或大写拉丁字母)校验码组成。本体代码采用系列(即分区段)顺序编码方法。校验码按下列公式计算:
8
C9 = 11 - MOD ( ∑Ci * Wi ,11) … (2)
i=1
其中:MOD —— 表示求余函数;
i —— 表示代码字符从左到右位置序号;
Ci —— 表示第i位置上的代码字符的值,采用附录A“代码字符集”所列字符;
C9 —— 表示校验码;
Wi —— 表示第i位置上的加权因子,其数值如下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2
当MOD函数值为1(即 C9 = 10)时,校验码用字母X表示。
JavaScrip版:
Java版:
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1位数字(或大写拉丁字母)校验码组成。本体代码采用系列(即分区段)顺序编码方法。校验码按下列公式计算:
8
C9 = 11 - MOD ( ∑Ci * Wi ,11) … (2)
i=1
其中:MOD —— 表示求余函数;
i —— 表示代码字符从左到右位置序号;
Ci —— 表示第i位置上的代码字符的值,采用附录A“代码字符集”所列字符;
C9 —— 表示校验码;
Wi —— 表示第i位置上的加权因子,其数值如下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2
当MOD函数值为1(即 C9 = 10)时,校验码用字母X表示。
JavaScrip版:
function isValidEntpCode(code, has) { var ws = [3, 7, 9, 10, 5, 8, 4, 2]; var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var reg = /^([0-9A-Z]){8}$/; if (!reg.test(C1_8)) { return false; } var sum = 0; for (var i = 0; i < 8; i++) { sum += str.indexOf(C1_8.charAt(i)) * ws[i]; } var C9 = 11 - (sum % 11); if (C9 == 11) { return '0'; } else if (C9 == 10) { return 'X' } else { return C9 } } document.writeln(isValidEntpCode("E0000000-X")); document.writeln(isValidEntpCode("790E3765-0")); document.writeln(isValidEntpCode("79013765-X")); document.writeln(isValidEntpCode("78305975-3"));
Java版:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ValidateUtils { protected static final Logger logger = LoggerFactory.getLogger(ValidateUtils.class); /** * 验证企业代码是否正确 * * @param code 企业组织机构代码 * @return */ public static final boolean isValidEntpCode(String code) { int[] ws = { 3, 7, 9, 10, 5, 8, 4, 2 }; String str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String regex = "^([0-9A-Z]){8}-[0-9|X]$"; if (!code.matches(regex)) { return false; } int sum = 0; for (int i = 0; i < 8; i++) { sum += str.indexOf(String.valueOf(code.charAt(i))) * ws[i]; } logger.info("sum is {}", sum); logger.info("sum % 11 is {}", sum % 11); int c9 = 11 - (sum % 11); String sc9 = String.valueOf(c9); if (11 == c9) { sc9 = "0"; } else if (10 == c9) { sc9 = "X"; } logger.info("sc9 is {}", sc9); return sc9.equals(String.valueOf(code.charAt(9))); } }
相关文章推荐
- 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
- 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
- ASP.NET 企业组织机构代码验证
- JS验证身份证、营业执照、组织机构代码等
- 全国组织机构代码校验码生成程序(java版)
- 组织机构代码校验码 验证程序
- oracle组织机构代码验证函数
- oracle组织机构代码验证函数
- 组织机构代码和社会信用码验证
- 组织机构代码校验码 验证程序
- js验证身份证营业执照组织机构代码等
- 少林寺的组织机构对研发企业组织结构的启示-罗汉堂是一个产品开发部门
- java多线程 中wait notify验证代码
- java代码实现身份证第18位的计算和验证身份证号码是否是真实有效.
- Java实现图片验证码具体代码
- In-App Purchase iap 内付费 二次验证代码 (java 服务器端)
- java代码验证身份证号码
- javasrcipt 注册验证代码
- 组织机构设计器窗体基类 代码分析
- 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4