2015-06-21 2 views
0

Я хочу использовать регулярное выражение для проверки текстовых полей в JSF. Может ли кто-нибудь рассказать мне образец за часы (чч: мм) и дату (дд/мм/гггг). Я пробовал следующие шаблоны, но ничего не знал.Регулярное выражение для даты и времени

<f:validateRegex pattern="[0-9][0-9]:[0-9][0-9]" /> 
<f:validateRegex pattern="[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]" /> 

ответ

1

Это довольно верно, но вы можете настроить вещи, чтобы сделать их более реалистичными.

«[0-2]?[0-9]:[0-5][0-9]» будет более реалистичным для времени, так как нет 32:79, а что нет. Кроме того, первый может быть необязательным, чтобы сделать 8:00 жизнеспособным.

[0-3]?[0-9]\/[0-1]?[0-9]\/[1-2][0-9][0-9][0-9] на дату, так как не может быть 42-го апреля и т. Д. Кроме того, избегайте «/», который можно рассматривать как разделитель.

Обратите внимание, что это все еще несовершенно из-за того, что «39 апреля» является доступным и так далее. Вы можете сделать более длинные и более сложные регулярные выражения, чтобы избежать этого, но лучше использовать встроенные функции или сделать свои собственные функции для этого, которые оценивают каждую часть ощутимого.

Например, февраль будет содержать 28 дней, 30-е из них не является жизнеспособной датой, но регулярное выражение не лучший инструмент для решения этих ситуаций.

2

Чтобы соответствовать hh:mm от 00:00 к 23:59 вы можете использовать:

<f:validateRegex pattern="(?:2[0-3]|[01][0-9]):[0-5][0-9]" />