Построить регулярное выражение

Необходимо построить регулярное выражение для такого условия:

множества вещественных констант с плавающей точкой, состоящих из целой части, десятичной точки, дробной части, символа е или Е, целого показателя степени с необязательным знаком и необязательного суффикса типа – одной из букв f, F, l или L. Целая и дробная части состоят из последовательностей цифр. Может отсутствовать либо целая, либо дробная часть (но не обе сразу).

Я сделал подходящее регулярное выражение, которое подходит практически для всего:

^([-+]?[0-9]*[.,]?([0-9]?[fFlL]?)*([eE][-+]?[0-9]+)?)$

Но проблема в том, что оно не правильно работает с последним условием. Числа на подобии .E+12 он засчитывает, хотя в ней нет ни дробной ни целой части, как можно видоизменить, чтобы подходило под последнее условие?