今天一来上班看到同事群里面说起EAN-13标准条形码最后一位校验码的事,于是顺手用js写了这个算法。今日个周一,又是一周新的开始祝大家天天好心情!
/*
EAN-13标准条形码最后一位校验码的计算步骤如下:
a、从代码位置序号2开始,所有偶数位的数字代码求和。
b、将步骤a的和乘以3。
c、从代码位置序号3开始,所有奇数位的数字代码求和。
d、将步骤b与步骤c的结果相加。
e、用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。
解释: EAN-13标准条形码代码位置从右到左序号13 12 11 10 9 8 7 6 5 4 3 2 1
作者:网帆
创建时间:2011-06-13
*/
function isBarCode(s) {
var reg = new RegExp( / ^[0-9]{12}$ / );
if (reg.exec(s.substring( 0 , 12 )))
return true ;
else
return false ;
}
function CheckBarCode(s) {
if ( ! isBarCode(s)) {
return " 验证条形码前12位出错! " ;
}
var a = 0 ;
var b = 0 ;
var c = 0 ;
var d = 0 ;
var e = 0 ;
for ( var i = 1 ; i <= 12 ; i ++ ) {
var sc = parseInt(s[i - 1 ]);
if (i <= 12 && i % 2 == 0 ) {
a += sc;
}
else if (i <= 11 && i % 2 == 1 ) {
b += sc;
}
}
c = a * 3 ;
d = b + c;
if (d % 10 == 0 )
e = d - d;
else
e = d + ( 10 - d % 10 ) - d;
return e;
}
alert( " 校验码是: " + CheckBarCode( " 693721090010X " ));
EAN-13标准条形码最后一位校验码的计算步骤如下:
a、从代码位置序号2开始,所有偶数位的数字代码求和。
b、将步骤a的和乘以3。
c、从代码位置序号3开始,所有奇数位的数字代码求和。
d、将步骤b与步骤c的结果相加。
e、用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。
解释: EAN-13标准条形码代码位置从右到左序号13 12 11 10 9 8 7 6 5 4 3 2 1
作者:网帆
创建时间:2011-06-13
*/
function isBarCode(s) {
var reg = new RegExp( / ^[0-9]{12}$ / );
if (reg.exec(s.substring( 0 , 12 )))
return true ;
else
return false ;
}
function CheckBarCode(s) {
if ( ! isBarCode(s)) {
return " 验证条形码前12位出错! " ;
}
var a = 0 ;
var b = 0 ;
var c = 0 ;
var d = 0 ;
var e = 0 ;
for ( var i = 1 ; i <= 12 ; i ++ ) {
var sc = parseInt(s[i - 1 ]);
if (i <= 12 && i % 2 == 0 ) {
a += sc;
}
else if (i <= 11 && i % 2 == 1 ) {
b += sc;
}
}
c = a * 3 ;
d = b + c;
if (d % 10 == 0 )
e = d - d;
else
e = d + ( 10 - d % 10 ) - d;
return e;
}
alert( " 校验码是: " + CheckBarCode( " 693721090010X " ));