校验组织机构代码 合法性
2014-04-21 17:57
585 查看
组织机构代码验证规则:
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在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)));
}
}
oc版:
+ (BOOL) isValidateEntpCode:(NSString *)code {
BOOL result = NO;
NSArray *ws = @[@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2"];
NSArray *str = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",
@"9",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",
@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
NSString *regex = @"^([0-9A-Z]){8}-[0-9|X]$";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if (![pred evaluateWithObject:code]) {
return result = NO;
}
int sum = 0;
for (int i = 0; i < 8; i++) {
NSString *temp = [code substringWithRange:NSMakeRange(i,1)];
NSUInteger index = [str indexOfObject:temp];
sum += index * [ws[i] intValue];
}
int c9 = 11 - (sum % 11);
NSString *sc9 = [NSString stringWithFormat:@"%d",c9];
if (11 == c9) {
sc9 = @"0";
} else if (10 == c9){
sc9 = @"X";
}
NSString *lastA = [code substringFromIndex:([code length]-1)];
return [sc9 isEqualToString:lastA];
}
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在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)));
}
}
oc版:
+ (BOOL) isValidateEntpCode:(NSString *)code {
BOOL result = NO;
NSArray *ws = @[@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2"];
NSArray *str = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",
@"9",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",
@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
NSString *regex = @"^([0-9A-Z]){8}-[0-9|X]$";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if (![pred evaluateWithObject:code]) {
return result = NO;
}
int sum = 0;
for (int i = 0; i < 8; i++) {
NSString *temp = [code substringWithRange:NSMakeRange(i,1)];
NSUInteger index = [str indexOfObject:temp];
sum += index * [ws[i] intValue];
}
int c9 = 11 - (sum % 11);
NSString *sc9 = [NSString stringWithFormat:@"%d",c9];
if (11 == c9) {
sc9 = @"0";
} else if (10 == c9){
sc9 = @"X";
}
NSString *lastA = [code substringFromIndex:([code length]-1)];
return [sc9 isEqualToString:lastA];
}
相关文章推荐
- 18位身份证和组织机构代码校验ORACLE函数
- 18位身份证和组织机构代码校验ORACLE函数
- 18位身份证和组织机构代码校验ORACLE函数
- 实现全国组织机构代码校验
- JS的 验证组织机构的合法性
- oracle组织机构代码验证函数
- 全国组织机构代码校验码生成程序(java版)
- 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
- JS验证身份证、营业执照、组织机构代码等
- 组织机构代码生成器
- 组织机构代码生成算法(c#实现)
- 身份证、组织机构代码及营业执照号校验函数【来自CSDN论坛】
- YbSoftwareFactory 代码生成插件【十一】:ASP.NET WebApi MVC下组织机构管理和菜单权限管理的实现
- 组织机构代码校验码 验证程序
- 组织机构代码
- 组织机构代码和社会信用码验证
- 组织机构代码校验码程序源代码
- 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
- [iOS]XCode代码修改组织机构名
- 身份证、组织机构代码及营业执照号校验函数