Вот один из способов, проиллюстрированный на Perl, для сопоставления только перечисленных вами строк. Важной частью является его метод для сопоставления пустых строк: он не делает каждый элемент шаблона необязательным, стратегия, которая имеет нежелательный эффект соответствия почти каждой строки.
use warnings;
use strict;
my @data = (
'',
'0',
'00',
'00.0',
'00.00',
'foo', # Should not match.
'.0', # Should not match.
);
for (@data){
print $_, "\n" if /^$|^[0-9]{1,2}(\.[0-9]{1,2})?$/;
}