Хм, это у вас работает?
^((100|[0-9]{1,2})(\.[0-9]{1,2})?)|(e)$
Для чего это среда? Какой-либо конкретный стандарт регулярных выражений, которого он должен придерживаться?
Ограничения на числовые значения (такие как «> 100» или «<= 5.3») могут сделать регулярные выражения довольно сложными. Эти типы противопоказаний лучше проверяются в логике приложения. Тогда вы можете иметь более простой (и более легкий для понимания) шаблон: </p>
^(([0-9]{1,3})(\.[0-9]{1,2})?)|(e)$
А затем извлеките группу захвата для первых 3 цифр и подтвердите это отдельно.
Edit:
Хорошо, я думаю, что это нужно сделать (последний, потому что мои глаза устают):
^(100(\.0{1,2})?)|([0-9]{1,2})(\.[0-9]{1,2})?|(e)$
Также позволит 100,00 или 100,0