Простое регулярное выражение для десятичной дроби с точностью 2

Каково регулярное выражение для десятичной дроби с точностью до 2?

Достоверные примеры:

123.12
2
56754
92929292929292.12
0.21
3.1

Неправильные примеры:

12.1232
2.23332
e666.76

Десятичная точка может быть необязательной, также могут быть включены целые числа.

Комментарии к вопросу (2)
Решение

Допустимые маркеры regex зависят от реализации. Общей формой является:

[0-9]+(\.[0-9][0-9]?)?

Более компактный:

\d+(\.\d{1,2})?

Оба предполагают наличие хотя бы одной цифры до и одной после десятичного знака.

Чтобы потребовать, чтобы вся строка была числом такого вида, оберните выражение тегами start и end, например (в форме Perl'а):

^\d+(\.\d{1,2})?$

Чтобы подобрать числа без ведущей цифры перед десятичной дробью (.12) и целые числа с последующим периодом (12.), исключив при этом ввод одного периода (.), попробуйте сделать следующее:

^(\d+(\.\d{0,2})?|\.?\d{1,2})$

Добавлено

Дробная часть обернута в ()?, чтобы сделать ее необязательной. Имейте в виду, что это исключает такие формы, как 12. Включая форму ^\d+\\\\\.?\d{0,2}$.

Добавлено

Используйте ^\d{1,6}(\.\d{1,2})?$, чтобы остановить повторение и дать ограничение на целую часть десятичного значения.

Комментарии (17)
^[0-9]+(\.[0-9]{1,2})?$

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

^                         # Start of string
 [0-9]+                   # Require one or more numbers
       (                  # Begin optional group
        \.                # Point must be escaped or it is treated as "any character"
          [0-9]{1,2}      # One or two numbers
                    )?    # End group--signify that it's optional with "?"
                      $   # End of string

Вы можете заменить [0-9] на \d в большинстве реализаций регулярных выражений (включая PCRE, наиболее распространенную). Я оставил [0-9], так как считаю, что так легче читать.

Также, вот простой скрипт на Python, который я использовал для проверки:

import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")

valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]

assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0
Комментарии (7)

Включает необязательный знак "минус" и запретить номера типа 015 (что может быть ошибочно принято за восьмеричных чисел) написать:

-?(0|([1-9]\d*))(\.\d+)?
Комментарии (2)

Для чисел, которые Дон'т иметь разделителя тысяч, мне нравится это простое, компактное выражение:

\d+(\.\d{2})?|\.\d{2}

или, чтобы не ограничиваться точности 2:

\d+(\.\d*)?|\.\d+

Последний матчей<БР> 1<БР> 100<БР> 100.<БР> 100.74<БР> 100.7<БР> 0.7<БР> .7<БР> .72<БР>

И это вовсе'т соответствовать пустая строка (как и \D.?\д б)

Комментарии (1)

Я использую этот один до двух знаков после запятой:<БР> (^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$) передает:<БР> .25<БР> 0.25<БР> 10.25<БР> +0.25<БР> <БР> не'т пройти:<БР> -.25<БР> 01.25<БР> 1.<БР> 1.256<БР>

Комментарии (1)
^[0-9]+(\.([0-9]{1,2})?)?$

Будет делать вещи, как 12. принято. Это не то, что обычно принято, но если в случае вы должны быть “гибкими”, то есть один путь. И, конечно, [0-9] можно заменить , Но я предполагаю, что это более читабельным этот путь.

Комментарии (0)

Попробуйте это

 (\\+|-)?([0-9]+(\\.[0-9]+))

Это позволит позитивные и негативные признаки также.

Комментарии (0)

Главный ответ является неправильным, потому что он применяется 5. или 5, входы

этот код справиться с этим (но в моем примере отрицательных чисел запрещены):

/^[0-9]+([.,][0-9]{1,2})?$/;

результаты ниже:

истинный => С "0" по - / правда => наша "0.00" по - / правда => наша "0.0" по - / правда => наша "0,00" по - / правда => наша "0,0" по - / правда => "в 1,2 и" истинный => наша "1.1" по - / правда => "и 1" по - / правда => наша "100" и правда => "по-100.00-то"/ Правда => "по-100.0-то" / Правда => и"1.11" по - / правда => "в 1,11-то"/ значение =false> наша "-5" по - / ложь => "и -0.00" по - / правда => наша "101" в / ложь => "и 0.00.0" по - / правда => наша "0.000-то" / Правда => "и 000.25-то" / значение =false> наша ".25-то" / истинный => "по-100.01" по - / истинный => "по-100.2-то" / истинный => наша "00" По - / значение =false> на "5.&и" / Ложь => и"6" ну / правда => наша "82" по - / правда => "по-81,3-то" / истинный => "и 7" по - / правда => "и 7.654 и"

Комментарии (0)

В общем, т. е. неограниченное количество десятичных разрядов:

^-?(([1-9]\Д*)|0)(.0*[1-9](0*[1-9])*)?$.

Комментарии (0)
preg_match("/^-?\d+[\.]?\d\d$/", $sum)
Комментарии (0)

Это работало со мной:

(-?[0-9]+(\.[0-9]+)?)

*Группа 1 - это номер вашего поплавка и группа 2** - это только часть.

Комментарии (0)

Я попробовал один с моим проектом. Это позволяет цифры С + | - признаки, а также.

/^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/
Комментарии (0)

Не нужно ли учитывать e в e666.76?

С

(e|0-9)\d*\d.\d{1,2)
Комментарии (3)

добавляя мой ответ, кто-то может оказаться полезным или, может быть, правильно у меня тоже.

function getInteger(int){
  var regx = /^[-+]?[\d.]+$/g;
  return regx.test(int);
}

alert(getInteger('-11.11'));
Комментарии (1)

Хром 56 не принимает такого рода моделей (хром 56 является аккпетинг 11.11. дополнительный .) с Количество, тип использования в качестве текста как прогресс.

в <тип входного=и"текст" с НГ-модель=то"/^[0-9]+(.[0-9]{1,2})?$/&и" />

Комментарии (0)

Это позволит десятичных возведения в степень и до 2 цифр ,

^[+-]?\d+(\.\d{2}([eE](-[1-9]([0-9]*)?|[+]?\d+))?)?$

Демо

Комментарии (3)
 function DecimalNumberValidation() {
        var amounttext = ;
            if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
            alert('Please enter only numbers into amount textbox.')
            }
            else
            {
            alert('Right Number');
            }
    }

функция будет проверять любое десятичное число в число, погода и после запятой или нет, он говорит: "правильный номер на" иначе "Пожалуйста, введите только цифры на текстовом поле&.мне оповещение придет.

Спасибо... :)

Комментарии (0)