Google на "научное примечание регулярное выражение" показывает количество совпадений, в том числе этот ( не используйте его !!!! ), который использует
*** warning: questionable ***
/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/
, который включает такие случаи, как -.5e7 и + 00000e33 (оба из которых вы, возможно, не захотите).
Вместо этого я бы настоятельно рекомендовал бы использовать синтаксис на сайте JSON Дуга Крокфорда , который явно документирует, что составляет число в JSON. Вот соответствующая синтаксическая диаграмма, взятая с этой страницы:
(источник: json.org )
Если вы посмотрите на строку 456 его скрипта json2.js (безопасное преобразование в / из JSON в javascript), вы увидите эту часть регулярного выражения:
/-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/
, что, по иронии судьбы, не соответствует его синтаксической диаграмме .... (похоже, я должен сообщить об ошибке) Я считаю, что регулярное выражение, которое реализует эту синтаксическую диаграмму, это:
/-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/
и если вы хотите разрешить начальный +, вы получите:
/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/
Добавьте захватывающие скобки по своему вкусу.
Я также настоятельно рекомендую вам детализировать несколько тестовых случаев, чтобы убедиться, что вы включаете те возможности, которые вы хотите включить (или не включать), такие как:
allowed:
+3
3.2e23
-4.70e+9
-.2E-4
-7.6603
not allowed:
+0003 (leading zeros)
37.e88 (dot before the e)
Удачи!