Если вы хотите, чтобы кнопка возврата ActionBar вела себя так же, как кнопка аппаратного возврата:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return false;
}
Шаблон, который вы использовали, не скомпилирован правильно из-за того, что \d
обрабатывается как escape-последовательность строки, а не escape-последовательность регулярного выражения. Для этого вам нужно удвоить обратную косую черту.
Кроме того, ваши альтернативы заключены с якорями ^
и $
. Хотя это правильно, оно выглядит неэффективно: имеет смысл поместить один ^
в начале и один $
в конце шаблона, обертывая альтернативы внутри группы, не захватывающей.
Кроме того, вы можете преобразовать все ваши группы захвата в не захватывающие (например, (...)
- (?:...)
), чтобы получить более высокую производительность, и заменить [/]
на простое /
, поскольку /
не требуется экранирование внутри конструктора RegExp
.
Итак, вы можете использовать
dateSubmitted: [null, [Validators.required, Validators.pattern('^(?:(?:10|12|0?[13578])/(?:3[01]|[12][0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|(?:11|0?[469])/(?:30|[12][0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|0?2/(?:2[0-8]|1[0-9]|0?[1-9])/(?:1[8-9]\\d{2}|[2-9]\\d{3})|0?2/29/[2468][048]00|0?2/29/[3579][26]00|0?2/29/[1][89][0][48]|0?2/29/[2-9][0-9][0][48]|0?2/29/1[89][2468][048]|0?2/29/[2-9][0-9][2468][048]|0?2/29/1[89][13579][26]|0?2/29/[2-9][0-9][13579][26])$')]],
См. обновленный Plunkr .