Каково регулярное выражение для десятичной дроби с точностью до 2?
Допустимые примеры :
123.12
2
56754
92929292929292.12
0.21
3.1
Неверные примеры:
12.1232
2.23332
e666.76
Десятичная точка может быть необязательной, а также могут быть включены целые числа.
Ответы:
Действительные токены регулярного выражения зависят от реализации. Общей формой является:
Более компактный:
Оба предполагают, что оба имеют по крайней мере одну цифру до и одну после десятичной точки.
Чтобы потребовать, чтобы вся строка представляла собой номер этой формы, оберните выражение в начальный и конечный теги, например (в форме Perl):
Чтобы сопоставить числа без первой цифры перед десятичной дробью (
.12
) и целыми числами, имеющими конечный период (12.
), исключая ввод одного периода (.
), попробуйте следующее:добавленной
Завершение дробной части,
()?
чтобы сделать его необязательным. Имейте в виду, что это исключает такие формы, как12.
Включение, которые были бы более похожими^\d+\\.?\d{0,2}$
.добавленной
Используйте,
^\d{1,6}(\.\d{1,2})?$
чтобы остановить повторение и задать ограничение для всей части десятичного значения.источник
-?
, как в-?\d+(\.\d{1,2})?
. Я не включал негативы и не начинал с десятичной точки, поскольку их не было в вопросе OP, хотя они, безусловно, действительны для более общего числового формата. Поток комментариев здесь дает несколько способов обработать ".21".И поскольку регулярные выражения ужасны для чтения, а тем более понятны, вот подробный эквивалент:
Вы можете заменить
[0-9]
на\d
в большинстве реализаций регулярных выражений (включая PCRE , наиболее распространенный). Я оставил это так,[0-9]
как я думаю, что это легче читать.Кроме того, вот простой скрипт Python, который я использовал для проверки:
источник
+
после первого закрытия парен,^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
вместо,\.
потому что.
будет выглядеть так, как будто он работает, но соответствует любому символу (не только десятичному разряду). Например, и то1z23
и другое1.23
можно считать действительным, если вы неЧтобы включить необязательный знак минус и запретить такие числа, как
015
(что можно принять за восьмеричные числа), напишите:источник
Для чисел, у которых нет разделителя тысяч, мне нравится это простое, компактное регулярное выражение:
или, чтобы не ограничиваться точностью до 2:
Последние матчи
1
100
100.
100,74
100,7
0,7
0,7
0,72
И это не соответствует пустой строке (как \ d *.? \ D * будет)
источник
Я использую этот срок до двух знаков после запятой:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
проходит:0,25
0,25
10,25
+0,25
не проходит:
-.25
01,25
1.
1.256
источник
Будем делать вещи, как
12.
принято. Это не то, что принято, но если вам нужно быть «гибким», это один из способов. И, конечно,[0-9]
может быть заменен на\d
, но я думаю, что таким образом это более читабельно.источник
Попробуй это
Это позволит также положительные и отрицательные признаки.
источник
Основной ответ НЕПРАВИЛЬНЫЙ, потому что он действителен
5.
или5,
введенэтот код обрабатывает его (но в моем примере запрещены отрицательные числа):
результаты приведены ниже:
источник
источник
В общем, то есть неограниченное количество знаков после запятой:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
,источник
Не нужно брать
e
вe666.76
во внимание?С участием
источник
добавив мой ответ тоже, кто-то может найти его полезным или может быть правильным мой тоже.
источник
Это работало со мной:
Группа 1 - ваш номер с плавающей точкой, а группа 2 - только дробь.
источник
Я попробовал один с моим проектом. Это позволяет номера со
+ | -
знаками, а также.источник
Chrome 56 не принимает этот тип шаблонов (Chrome 56 принимает 11.11. Дополнительный.) С номером типа, используйте тип в качестве текста как прогресс.
источник
Это позволит десятичную с возведением в степень и до 2 цифр,
демонстрация
источник
1.2e-10
([0-9]+)?
лучше написано\d*
. Теперь это не совпадает10e3
. И ОП хочет сопоставить до 2 цифр.Функция будет проверять любое десятичное число, если номер погоды имеет десятичные разряды или нет, в противном случае будет указано «Правильный номер». «Пожалуйста, вводите только цифры в текстовое поле суммы». появится сообщение
Спасибо... :)
источник