js 正则校验车架号VIN
正则要求:
- 由大写字母和数字组成,长度17位;
- 字母不会出现O、Q、I三个字母;
- 第9位只能是【0-9】的数字和字母X;
- 第13-17位只能是数字;
根据百度、谷歌只搜搜到这个,还请各位大佬们赐教
现在只实现了1,2两个条件;如下:let reg=/^[A-HJ-NPR-Z\d]{17}$/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据规则一个个罗列出来不就是了?
/^[A-HJ-NPR-Z\d]{8}[X\d][A-HJ-NPR-Z\d]{3}\d{5}$/
简单的是
/^[A-HJ-NPR-Z\d]{8}[X\d][A-HJ-NPR-Z\d]{3}\d{5}$/
这个规则,不过估计类似身份证号,里面应该还包括校验位,估计校验位就是第9位,所以完整判别估计不能只由规则式判定,还需要检测校验位。检索到 https://baijiahao.baidu.com/s...
所以完整的还需要进一步进行判断。
这里有校验位计算方法 https://blog.csdn.net/shenhon...
@xdsnet 的回答已经很全面了,先用正则表达式快速检查,再做校验。我这里只是对代码做一个纯粹的技术探讨。
关于
cOT
的生成手写太累,可以
这段代码只在初始化的时候执行一次,对效率没啥影响。如果还是想直接定义成常量,将上述代码的执行结果在控制台中用
JSON.stringify(cOT)
输出就是。关于计算 SUM
效率并不如原生循环,只是把计算过程封装在一句话里。用 IIFE 也可以达到同样的效果。
关于 10 => 'X'
直接用数组很直接,关无毛病。
这是个时间换空间的写法(其实对于这点空间,没啥卵用),