VIN验证RegEx

By simon at 2018-02-07 • 0人收藏 • 89人看过

我已经写了一个VIN验证RegEx的基础上 当然,那么当我尝试运行一些测试,它不接受一些有效的VIN号码。 我的RegEx:

^[A-HJ-NPR-Za-hj-npr-z\\d]{8}[\\dX][A-HJ-NPR-Za-hj-npr-z\\d]{2}\\d{6}$
VIN号码不工作: 1ftfw1et4bfc45903 WP0ZZZ99ZTS392124 VIN号码工作: 19uya31581l000000 1hwa31aa5ae006086 (我觉得问题发生在nu最后,维基百科创造了它 听起来像只会有6个数字,而不是工作 但是是有效的棕褐色只结束于5) 任何帮助解决这个问题将不胜感激!

5 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

我无法帮助你提供VIN号码的完美正则表达式,但我可以解释 为什么这个在你的* 1ftfw1的例子中是失败的et4bfc45903 *:   * ^[A-HJ-NPR-Za-hj-npr-z\d]{8} 这允许8个字符,由任何数字和任何字母组成 IOQ;它正确地找到前8个字符: * * 1ftfw1et   * [\dX] 这允许1个字符,一个数字或大写X;它正确 找到下一个字符: * 4 *   * [A-HJ-NPR-Za-hj-npr-z\d]{2} 这允许2个字符组成的任何数字和除我以外的任何字母, O和Q;它适当地找到接下来的2个字符: * * BF   * \d{6}$ 这允许正好是6位数字,是正则表达式失败的原因;因为 最后的6个字符不是全部数字: * * c45903

2018-02-07   #2

我无法帮助你提供VIN号码的完美正则表达式,但我可以解释 为什么这个在你的* 1ftfw1的例子中是失败的et4bfc45903 *:   * ^[A-HJ-NPR-Za-hj-npr-z\d]{8} 这允许8个字符,由任何数字和任何字母组成 IOQ;它正确地找到前8个字符: * * 1ftfw1et   * [\dX] 这允许1个字符,一个数字或大写X;它正确 找到下一个字符: * 4 *   * [A-HJ-NPR-Za-hj-npr-z\d]{2} 这允许2个字符组成的任何数字和除我以外的任何字母, O和Q;它适当地找到接下来的2个字符: * * BF   * \d{6}$ 这允许正好是6位数字,是正则表达式失败的原因;因为 最后的6个字符不是全部数字: * * c45903

2018-02-07   #3

* VIN 应该只有A-Z,90-9个字符,但不能 I,A-Z5或Q 最后6 c VIN 的字符应该是一个数字 * VIN *长度应为17个字符 你没有指定你使用的是哪种语言t下面的正则表达式可以 用于验证美国VIN * php:

/^(?:([A-HJ-NPR-Z]){3}|\d{3})(?1){2}\d{2}(?:(?1)|\d)(?:\d|X)(?:(?1)+\d+|\d+(?1)+)\d{6}$/i

2018-02-07   #4

这应该工作,这是从splunk搜索,所以有一些额外的 排除**

(?i)(?<VIN>[A-Z0-9^IOQioq_]{11}\d{6})

2018-02-07   #5

这个正则表达式对于验证US VINs是正确的,包括 你描述的一个: * [A-HJ-NPR-Z0-9] {17} * Remembe使其与国旗i不区分大小写 来源:https://github.com/rfink/angular-vin

登录后方可回帖

Loading...