2014-11-07 2 views
0

Я хочу написать регулярное выражение для покрытия продолжительности времени 020000AM до 030200 AM. [02:00:00 - 03:02:00] Я сделал следующее, но, похоже, это неправильно.Регулярное выражение для покрытия продолжительности времени

[02<4#>|030[0|1|2]]<2#> 

Может кто-нибудь помочь мне в этом ....

+1

Regex действительно не построен для сложных диапазонов, подобных этому, но я могу попытаться что-то взбить. Чтобы помочь протестировать, вы можете обновить свой вопрос с примерами совпадений и неудачей примеров. – Sam

+1

Вы можете создать регулярное выражение для этого требования, но это не правильный инструмент для работы, ИМО. –

ответ

0

Вот расширенное выражение:

02[0-5][0-9][0-5][0-9]|03(?:0[01][0-5][0-9]|0200) 

Вот расширенное выражение распались, так что вы можете прочитать его «проще»:

02 
[0-5][0-9] 
[0-5][0-9] 
| 
03 
(?: 
    0[01] 
    [0-5][0-9] 
    | 
    02 
    00 
) 

Вот «оптимизированное» выражение (вы можете видеть, что читать гораздо труднее и намного сложнее для изменения диапазона):

0(?:2[0-5][0-9][0-5][0-9]|30(?:[01][0-5][0-9]|200)) 
Смежные вопросы