是否可以用下列规则验证英国驾驶执照?
到目前为止,我有以下几点,但这是行不通的:
var regex = /^[A-Z0-9]{5}\d[0156]\d([0][1-9]|[12]\d|3[01])\d[A-Z0-9]{3}[A-Z]{2}$/应通过以下几点:
[
'FARME100165AB5EW',
'MAR99740614BC2TL',
'MARTI740614A92TL',
'MARTI740614992TL',
'99999740614992TL'
].forEach(drivingLicenceNumber => regex.test(drivingLicenceNumber)只有数组的第一个元素通过。
而下面这些都会失败
[
'1FARM382940AZ9AZ',
'F2ARM382940AZ9AZ',
'FA3RM382940AZ9AZ',
'FAR4M382940AZ9AZ',
'FARM5382940AZ9AZ'
].forEach(drivingLicenceNumber => !regx.text(drivingLicenceNumber)发布于 2017-08-03 20:15:13
这应该是可行的:
^[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
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));
});
发布于 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
另请参阅:
您所提供的regex将针对此格式进行测试,并将针对有效的英国驾驶执照进行测试,但您所设置的规则与regex或格式不匹配。
^[A-Z9]{5}\d[0156]\d([0][1-9]|[12]\d|3[01])\d[A-Z9]{2}\d[A-Z]{2}$
https://stackoverflow.com/questions/45493570
复制相似问题