Событие изменения календаря простых лиц с проблемой валидатора

Вам нужно понять, что каждый раз, когда вы пишете шаблон, его сначала интерпретируют как строку перед тем, как читать и интерпретировать второй раз с помощью механизма регулярных выражений. Давайте расскажем, что происходит:

>>> s='\r'

s содержит символ CR.

>>> re.match('\r', s)
<_sre.SRE_Match object; span=(0, 1), match='\r'>

Здесь строка '\r' представляет собой строку, содержащую CR, поэтому приводится литерал CR к движку регулярных выражений.

>>> re.match('\\r', s)
<_sre.SRE_Match object; span=(0, 1), match='\r'>

Строка теперь является буквальной обратной косой чертой и литералом r, механизм регулярных выражений принимает эти два символа, а так как \r - это escape-последовательность регулярного выражения, которая также означает символ CR , вы также получаете совпадение.

>>> re.match('\\\r', s)
<_sre.SRE_Match object; span=(0, 1), match='\r'>

Строка содержит буквальный обратный слэш и литерал CR, механизм регулярных выражений получает \ и CR, но поскольку \CR не известен Последовательность escape-кода regex игнорируется, и вы получаете совпадение.

Обратите внимание, что для механизма регулярных выражений буквальная обратная косая черта - это escape-последовательность \\ (поэтому в строке шаблона r'\\' или '\\\\')

0
задан Filou 15 January 2019 в 16:45
поделиться

1 ответ

Отличный совет, спасибо @Kukeltje за комментарий.

Я пошел немного дальше и установил delay="10000", чтобы всплывающее окно практически никогда не закрывалось автоматически при обычном взаимодействии с пользователем. Мои пользователи привыкли, что всплывающее окно не закрывается автоматически из-за стандартного поведения ввода даты и времени компонента <p:calendar /> в любом случае.

Это помогло мне.

Обновление

Может быть, 10 секунд - это не очень хорошая идея, потому что при ручном вводе даты также требуется 10 секунд для запуска проверки ...

0
ответ дан Filou 15 January 2019 в 16:45
поделиться
Другие вопросы по тегам:

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