Вот что я включил.
(([1-9]+\.[0-9]*)|([1-9]*\.[0-9]+)|([1-9]+))([eE][-+]?[0-9]+)?
Чтобы было проще обсуждать, я назову разделы
( ([1-9]+ \. [0-9]* ) | ( [1-9]* \. [0-9]+ ) | ([1-9]+)) ( [eE] [-+]? [0-9]+ )?
-------------------------------------------------------- ----------------------
A B
A: соответствует всем параметрам 'e / E' B: соответствует научной нотации
Разбивка A Мы получаем три части
( ([1-9]+ \. [0-9]* ) | ( [1-9]* \. [0-9]+ ) | ([1-9]+) )
----------1---------- ---------2---------- ---3----
Часть 1: Позволяет 1 или более цифр от 1 до 9, 0 или более цифр после десятичной точки (цель 1). Часть 2: позволяет указать 0 или более цифр от 1 до 9, десятичную, 1 или более цифр после десятичной (цель 2). Часть 3: разрешает 1 или более цифр от 1 до 9 с нет десятичного числа (см. № 4 в целевом списке)
. Разбивая B, мы получаем 4 основные части
( [eE] [-+]? [0-9]+ )?
..--1- --2-- --3--- -4- ..
Часть 1: требуется либо верхний, либо нижний регистр «e» для научная нотация (например, цели 8 и 9). Часть 2: допускает необязательный положительный или отрицательный знак для экспоненты (например, цели 4, 5 и 6). Часть 3: разрешает 1 или более цифр для показателя (цель 8) Часть 4: позволяет научное обозначение быть необязательным как группа (цель 3)