Использование телепатии (ожидание) для расширения вашего алгоритма и запрета использования цифр, точек, не цифр в качестве числа. Я могу предложить эти 3 регулярных выражения.Используйте их последовательно для одной и той же строки и объедините (concat, append) результаты.
"[+-]?\\d+((?![\d.])|$)" // ±digits w/o dot after them (actually, this is integer)
"[+-]?\\d+\\.\\d+((?![\deE])|$)" // ±digits, dot, digit w/o [eE] after them
"[+-]?\\d+\\.\\d+[eE][+-]?\\d+" // full variant: ±digits, dot, digits, "e", ±digits
Я пробовал использовать какой-то подход для объединения этого в одно регулярное выражение, но, к сожалению, это не работает.