首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中验证英国驾照regex

在javascript中验证英国驾照regex
EN

Stack Overflow用户
提问于 2017-08-03 20:01:45
回答 2查看 4.5K关注 0票数 2

是否可以用下列规则验证英国驾驶执照?

  • 数字1-5:字母A或9s
  • 数字6-11:数字0-9
  • 数字12-13:字母A-Z或9 s
  • 数字14: 0-9
  • 数字15-16:两个字母A

到目前为止,我有以下几点,但这是行不通的:

代码语言:javascript
复制
var regex = /^[A-Z0-9]{5}\d[0156]\d([0][1-9]|[12]\d|3[01])\d[A-Z0-9]{3}[A-Z]{2}$/

应通过以下几点:

代码语言:javascript
复制
  [
    'FARME100165AB5EW',
    'MAR99740614BC2TL',
    'MARTI740614A92TL',
    'MARTI740614992TL',
    '99999740614992TL'
  ].forEach(drivingLicenceNumber => regex.test(drivingLicenceNumber)

只有数组的第一个元素通过。

而下面这些都会失败

代码语言:javascript
复制
  [
    '1FARM382940AZ9AZ',
    'F2ARM382940AZ9AZ',
    'FA3RM382940AZ9AZ',
    'FAR4M382940AZ9AZ',
    'FARM5382940AZ9AZ'
  ].forEach(drivingLicenceNumber => !regx.text(drivingLicenceNumber)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-03 20:15:13

这应该是可行的:

代码语言:javascript
复制
^[A-Z9]{5}\d{6}[A-Z9]{2}\d[A-Z]{2}$

解释:

  • [A-Z9]{5}数字1-5:字母A或9s
  • \d{6}数字6-11: 0-9
  • [A-Z9]{2}数字12-13:字母A或9s
  • \d数字14: 0-9
  • [A-Z]{2}数字15-16:两个字母A

代码语言:javascript
复制
var regex = /^^[A-Z9]{5}\d{6}[A-Z9]{2}\d[A-Z]{2}$$/

console.log('all pass');
  [
    'FARME100165AB5EW',
    'MAR99740614BC2TL',
    'MARTI740614A92TL',
    'MARTI740614992TL',
    '99999740614992TL'
  ].forEach(drivingLicenceNumber => {
    console.log(drivingLicenceNumber, regex.test(drivingLicenceNumber));
  });  
console.log('all fail');
  [
    '1FARM382940AZ9AZ',
    'F2ARM382940AZ9AZ',
    'FA3RM382940AZ9AZ',
    'FAR4M382940AZ9AZ',
    'FARM5382940AZ9AZ'
  ].forEach(drivingLicenceNumber => {
    console.log(drivingLicenceNumber, regex.test(drivingLicenceNumber));
  }); 

票数 4
EN

Stack Overflow用户

发布于 2017-09-27 11:49:36

所提供的正则表达式是为有效的英国驾驶执照而提供的,而您设置的规则与此不匹配。

格式是:

5个字母(姓氏的前5个或9s => 9s构成其余的字母,如果姓氏不是5位数)

[A-Z9]{5}

一个数字(第一个从出生的十年开始)1957年=5)

\d

两个数字(考虑到女性的出生月份有一个额外的50,所以09是69,12是72),因此第一个数字只能是0,1,5或6,第二个数字可以是0到9之间的任何东西(你可以在这里更深一些,不要得到19之类的值,但我不介意)

[0156]

\d

两个数字(你出生的那个月的日子)

([0][1-9]|[12]\d|3[01])

一个数字(从出生的十年起)。1957年=7)

\d

两个字母/数字=>你的首字母(如-保罗西蒙= PS) 9s填写如果没有中间名

[A-Z9]{2}

3个字母和数字,这些字母和数字是计算机数字核对数字的顺序:

\d然后[A-Z]{2}

这个链接解释了英国驾照的精确布局。

068315

另请参阅:

Kingdom

您所提供的regex将针对此格式进行测试,并将针对有效的英国驾驶执照进行测试,但您所设置的规则与regex或格式不匹配。

^[A-Z9]{5}\d[0156]\d([0][1-9]|[12]\d|3[01])\d[A-Z9]{2}\d[A-Z]{2}$

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45493570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档