You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求TypeScript/JS环境下的ISIN号码验证函数

ISIN 号码验证函数(TypeScript/JavaScript)

验证逻辑

ISIN的有效性验证需遵循以下核心规则:

  • 长度必须严格为12个字符
  • 前两位是大写国家/地区代码(A-Z),剩余10位由字母(A-Z)和数字(0-9)组成,最后一位为校验位
  • 通过**Luhn算法(模10校验)**验证:先将所有字母转换为对应数字(A=10,B=11…Z=35),再对转换后的数字序列执行Luhn校验

TypeScript 实现

function validateISIN(isin: string): boolean {
    // 检查长度合法性
    if (isin.length !== 12) return false;
    
    // 验证格式:前两位大写字母,后续10位为字母/数字组合
    const isinPattern = /^[A-Z]{2}[A-Z0-9]{10}$/;
    if (!isinPattern.test(isin)) return false;

    // 将字母转换为对应数字字符串
    let numericStr = '';
    for (const char of isin) {
        const charCode = char.charCodeAt(0);
        if (charCode >= 65 && charCode <= 90) { // 处理A-Z
            numericStr += (charCode - 55).toString();
        } else { // 处理0-9
            numericStr += char;
        }
    }

    // 执行Luhn算法校验
    let sum = 0;
    let isEven = false;
    // 从右往左遍历数字序列
    for (let i = numericStr.length - 1; i >= 0; i--) {
        let digit = parseInt(numericStr[i], 10);
        if (isEven) {
            digit *= 2;
            // 若乘积大于9,减去9等价于取各位数字之和
            if (digit > 9) digit -= 9;
        }
        sum += digit;
        isEven = !isEven;
    }

    // 总和能被10整除则ISIN有效
    return sum % 10 === 0;
}

JavaScript 实现

function validateISIN(isin) {
    if (isin.length !== 12) return false;
    
    const isinPattern = /^[A-Z]{2}[A-Z0-9]{10}$/;
    if (!isinPattern.test(isin)) return false;

    let numericStr = '';
    for (const char of isin) {
        const charCode = char.charCodeAt(0);
        if (charCode >= 65 && charCode <= 90) {
            numericStr += (charCode - 55).toString();
        } else {
            numericStr += char;
        }
    }

    let sum = 0;
    let isEven = false;
    for (let i = numericStr.length - 1; i >= 0; i--) {
        let digit = parseInt(numericStr[i], 10);
        if (isEven) {
            digit *= 2;
            if (digit > 9) digit -= 9;
        }
        sum += digit;
        isEven = !isEven;
    }

    return sum % 10 === 0;
}

示例测试

console.log(validateISIN("FR0014001NN8")); // true
console.log(validateISIN("FR0014001NN7")); // false

内容的提问来源于stack exchange,提问作者Farandole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:13