2013-08-19 4 views
1

Я новичок в регулярном выражении. Как знать шаблон ниже даты.Regex date pattern соответствует

 
(\\d{2}(0[1-9]|1[012]|[0]{2})) 

Я просто знаю,

  • 0[1-9] является 01 или 12 или 19 ....
  • 1[012] составляет 10 или 11 или 12
  • [0]{2} 0000?
  • \\d{2} есть?
+1

'0 [1-9]' не '01' или' 12' или '19', это либо' 01, 02, 03, 04, 05, 06, 07, 08, либо 09'. Вы действительно должны прочитать о регулярном выражении, перейдите к [информации регулярных выражений] (http://www.regular-expressions.info). –

+0

@Sniffer Обратите внимание на «...». – arshajii

+1

@arshajii Я заметил это, но тем не менее '0 [1-9]' никогда не является '12'. –

ответ

8

\d предопределенный класс символов, который, как правило, эквивалентна [0-9] (иногда это также включает в себя Юникода цифр, в зависимости от регулярных выражений). Кроме того, {n} является квантором, а X{n} соответствует X точно n раз. Поэтому \d{2} соответствует двум последовательным цифрам.

Кроме того, [0]{2} составляет 2 последовательных 0 с: 00 (не 0000).

Вы также немного не о 0[1-9]: он соответствует любому из 01, 02, ..., 09 (1 не может быть в самом начале). Вы правы о 1[012].

В целом, это то, что ваше регулярное выражение выглядит следующим образом:

Regular expression visualization

Если вы хотите узнать больше о них, большой онлайн справочник относительно регулярных выражений regular-expressions.info.


Обратите внимание, что в приведенном выше ответе я предположил, что вы имели в виду \d по \\d и использовали последний, потому что вы представляете регулярное выражение в виде строки, которая требует \ с, чтобы быть экранированы. Однако, когда вы представляете общие регулярные выражения, лучше оставить \ s unescaped. Другими словами, \\d может быть интерпретирован как буквальная обратная косая черта, за которой следует d, поэтому \\d{4} будет соответствовать \dddd. Предположительно, это не то, что вы имеете в виду;

+1

Awesome Tool :) +1 для этого ^^ – dognose