Angular6 matInput Validators.pattern для телефонных номеров [дубликат]

Если вы хотите, чтобы кнопка возврата ActionBar вела себя так же, как кнопка аппаратного возврата:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == android.R.id.home) {
                    onBackPressed();
                    return true;
            }
            return false;
    }
1
задан David 25 September 2017 в 12:53
поделиться

1 ответ

Шаблон, который вы использовали, не скомпилирован правильно из-за того, что \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 .

1
ответ дан Wiktor Stribiżew 15 August 2018 в 18:50
поделиться
  • 1
    Спасибо за все ваше время и терпение с моей проблемой. Я искренне ценю это. – David 25 September 2017 в 13:08
  • 2
    Я забыл удалить ненужные группы, не связанные с захватом, и сделал это сейчас. – Wiktor Stribiżew 25 September 2017 в 13:10
  • 3
    Вы - ниндзя регулярного выражения. – David 25 September 2017 в 13:12
Другие вопросы по тегам:

Похожие вопросы: