В настоящее время я использую регулярное выражение для обнаружения допустимых чисел с плавающей запятой, которое выглядит следующим образом:
/^[0-9]{1,10}(\.\d{0,3})?$/
Как и ожидалось, я могу сопоставить следующие значения:
0
0.
0.1
0.12
0.123
Однако мне необходимо иметь возможность проверять и сопоставлять следующие входные данные, поскольку эти значения можно анализировать как числовой тип в JavaScript.
.1
.12
.123
Я рассмотрел необязательное сопоставление первого символа, но пока не смог найти реального решения. Я думаю, что тот факт, что это необязательно, усложняет реализацию.
🤔 А знаете ли вы, что...
JavaScript можно использовать для создания видеоигр, как 2D, так и 3D, с использованием библиотеки Three.js.
Чтобы сопоставить допустимые числа с плавающей запятой, включая предоставленные вами (например, .1, .12, .123), вы можете использовать следующее регулярное выражение:
/^(?:\d{1,10}(\.\d{0,3})?|(\.\d{1,3}))$/
ОБЪЯСНЕНИЕ: ваше исходное регулярное выражение правильно соответствует числам от 1 до 10 цифр до десятичной точки и от 0 до 3 цифр после десятичной точки. Однако он упускает один ключевой случай: числа, начинающиеся с десятичной точки (например, .1, .12, .123).
Чтобы охватить этот недостающий случай, я внес два изменения:
1. Цифры перед десятичной запятой сделаны необязательными: я обернул часть, соответствующую цифрам перед десятичной запятой, в группу без захвата (?: ... )?
и сделал ее необязательной с помощью ?
. Это позволяет регулярному выражению сопоставлять числа, в которых нет цифр перед десятичной запятой, например .1, .12 и .123.
2. Добавлен альтернативный вариант для сопоставления чисел, начинающихся с десятичной точки: я добавил альтернативный шаблон (\.\d{1,3})
после оператора |
(ИЛИ), чтобы явно сопоставлять случаи, когда число начинается с десятичной точки и имеет после него от 1 до 3 цифр. Это гарантирует, что такие числа, как .1, .12 и .123, будут действительными.
Чтобы сопоставить числа с плавающей запятой, в том числе с десятичной точкой в начале, вы можете использовать следующее регулярное выражение:
/^\d*\.?\d+$|^\.\d+$/
Он обрабатывает случаи с необязательными ведущими цифрами, необязательными десятичными точками и цифрами после десятичной точки.