Fork me on GitHub

标准商品条码校验

原创文章,未经允许,请勿转载

目前我国商品条码主要采用 EAN13 标准

js版本

function validateEAN13(barCode){
    if(barCode.length != 13) return false;
    var sum=0;
    var sum1=0;
    for (var i = barCode.length - 2; i >= 0; i--) {
        if( i % 2 != 0 ) sum += Number(barCode.charAt(i));
        if( i % 2 == 0 ) sum1 += Number(barCode.charAt(i));
    }
    var sumN1 = 3*sum + sum1;
    var checkCode = String(((parseInt(sumN1/10)+1)*10-sumN1) % 10);
    return checkCode == barCode.charAt(barCode.length - 1);
}

测试

console.log(validateEAN13('6935570507694'))

golang版本

func validateEAN13(barCode string) bool {
    if len(barCode) != 13 {
        return false
    }
    sum := 0
    sum1 := 0
    for i := len(barCode) - 2; i >= 0; i-- {
        if i%2 != 0 {
            sum += int(barCode[i]) - 48
        }
        if i%2 == 0 {
            sum1 += int(barCode[i]) - 48
        }
    }
    sumN1 := 3*sum + sum1
    checkCode := (((sumN1/10)+1)*10 - sumN1) % 10
    return checkCode == (int(barCode[len(barCode)-1])-48) % 10
}

测试

fmt.Printf("SN is ok? %t", validateEAN13("6935570507694"))

来源:悠游悠游,2019-01-02,原文地址:https://yymmss.com/p/barcode-validate.html