【vin 国标正则校验】

规则一

复制代码
var checkVIN=function(VIN){
    if(typeof(VIN)!='string') return false;
    if(VIN.length!=17) return false;
    VIN=VIN.toUpperCase();
    RE==/^[A-HJ-NPR-Z\d]{8}[X\d][A-HJ-NPR-Z\d]{3}\d{5}$/
    if(!RE.test(VIN)) return false;
    let cOT={
        '0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,
        '8':8,'9':9,'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,
        'G':7,'H':8,'J':1,'K':2,'L':3,'M':4,'N':5,'P':7,
        'R':9,'S':2,'T':3,'U':4,'V':5,'W':6,'X':7,'Y':8,
        'Z':9
    };
    let xWT=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]; 
    // 因为第9位权重为0,所以原来是什么字符不影响结果,可以方便后面计算
    let sum=0;
    VINs=VIN.split('');
    for(let i=0;i<17;i++){
        sum=sum + cOT[ VINs[i] ] * xWT[i];
    }
    let cT=['0','1','2','3','4','5','6','7','8','9','X'];
    if( cT[ (sum%11) ] == VINs[8]) return true;
    return false;
}

其他正则

复制代码
    const regx = /^[A-HJ-NPR-Z0-9]{17}$/
    const regx = /^[A-HJ-NPR-Z\d]{17}$/
相关推荐
亭上秋和景清几秒前
指针进阶: 回调函数
开发语言·前端·javascript
前端小臻2 分钟前
react中的函数组件和类组件(快捷指令和区别)
前端·react.js·前端框架
烤麻辣烫3 分钟前
黑马大事件学习-15(前端登录页面)
前端·css·vue.js·学习·html
Cache技术分享12 分钟前
266. Java 集合 - ArrayList vs LinkedList 内存使用深度剖析
前端·后端
豆苗学前端17 分钟前
彻底讲透浏览器的事件循环,吊打面试官
前端·javascript·面试
来自上海的这位朋友18 分钟前
从零打造一个无依赖的Canvas图片编辑器
javascript·vue.js·canvas
怀旧,18 分钟前
【Linux系统编程】9. 进程控制(上)
linux·运维·服务器
很㗊20 分钟前
BSP之以太网接口学习笔记
linux·驱动开发·笔记·学习
wadesir23 分钟前
Debian dd命令详解(磁盘备份与恢复完整教程)
linux·运维·debian
OpenTiny社区28 分钟前
揭秘!TinyEngine低代码源码如何玩转双向转换?
前端·vue.js·低代码