2014-02-04 3 views
-4

Мне нужен пример того, как проверить идентификационный номер в формате идентификационной карты Кубы. Я ищу проверку регулярных выражений в html5.Ищет регулярное выражение для подтверждения кубинского удостоверения личности

Описание Формат:

Date of Birth (yymmdd) and 5 digits 
There are 11 total digits. 

Пример: 89103024100

ответ

1

Примечание: это использует грубую проверку даты с помощью чистого RegEx (т. Е любой месяц может быть до 31 дней):

[0-9]{2}(?:0[0-9]|1[0-2])(?:0[1-9]|[12][0-9]|3[01])[0-9]{5} 

Вы можете проверить, соответствует ли строка с помощью JavaScript:

/[0-9]{2}(?:0[0-9]|1[0-2])(?:0[1-9]|[12][0-9]|3[01])[0-9]{5}/.test('82061512345'); 
// returns true because it is valid 

Если вам нужно истинное подтверждение даты я хотел бы сделать что-то вроде следующего:

var id1 = '82061512345'; // example valid id 
var id2 = '82063212345'; // example invalid id 

function is_valid_date(string) { 
    var y = id.substr(0,2); // 82 (year) 
    var m = id.substr(2,2); // 06 (month) 
    var d = id.substr(4,2); // 15/32 (day) 
    if (isNaN(Date.parse(y + '-' + m + '-' + d)) { 
     return false; 
    } else { 
     return true; 
    } 
} 

is_valid_date(id1); // returns true 
is_valid_date(id2); // returns false 

И вы можете лавировать на следующий за полной проверки ID:

function is_valid_id(id) { 
    if (/[0-9]{11}/.test(id) && is_valid_date(id)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

is_valid_id(id1); // returns true 
is_valid_id(id2); // returns false 
+0

Я тестировал этот образец и не работал, потому что не проверял високосные годы. – user3272405

0
/(\d{2}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012]) 
(29|30)|(0[13578]|1[02])31)|([02468][048]|[13579][26])0229)[0-9]{5}/.test('00023'); 

return false // не является високосным годом

/(\d{2}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012]) 
(29|30)|(0[13578]|1[02])31)|([02468][048]|[13579][26])0229)[0-9]{5}/.test('00022912345'); 

return true // високосный год

Смежные вопросы