Написание Regex для обработки дополнительных символов с плавающей запятой в начале строки?

В настоящее время я использую регулярное выражение для обнаружения допустимых чисел с плавающей запятой, которое выглядит следующим образом:

/^[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
58
2

Ответы:

Решено

Чтобы сопоставить допустимые числа с плавающей запятой, включая предоставленные вами (например, .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+$/

Он обрабатывает случаи с необязательными ведущими цифрами, необязательными десятичными точками и цифрами после десятичной точки.