Validate number - это float с двумя номерами после decmimal javascript [duplicate]

Это не очень ответ, но я бы сказал, что это работает отлично, лично

Сказав это, поскольку не имеет значения, каковы значения (вы использовали 0 , 1, 2), я бы использовал значимую строку в случае, если вы когда-либо хотели вывести текущее значение.

227
задан Peter O. 8 December 2012 в 11:21
поделиться

14 ответов

Действующие маркеры регулярных выражений различаются в зависимости от реализации. Наиболее общей формой, которую я знаю, будет:

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

Самый компактный:

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

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

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

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

ДОБАВЛЕН: Завершена дробная часть в ()? чтобы сделать его необязательным. Имейте в виду, что это исключает такие формы, как «12.» В том числе это будет больше похоже на ^\d+\.?\d{0,2}$.

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

332
ответ дан Debashis Chowdhury 3 September 2018 в 14:22
поделиться
Функция
 function DecimalNumberValidation() {
        var amounttext = ;
            if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
            alert('Please enter only numbers into amount textbox.')
            }
            else
            {
            alert('Right Number');
            }
    }

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

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

-1
ответ дан Bhanu pratap 3 September 2018 в 14:22
поделиться

Вам не нужно принимать во внимание e в e666.76?

С

(e|0-9)\d*\d.\d{1,2)
18
ответ дан bluish 3 September 2018 в 14:22
поделиться
preg_match("/^-?\d+[\.]?\d\d$/", $sum)
2
ответ дан DEC32 3 September 2018 в 14:22
поделиться

Я использую это для двух знаков после запятой: (^(\+|\-)(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

6
ответ дан frustrated regex user 3 September 2018 в 14:22
поделиться
^[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
233
ответ дан isherwood 3 September 2018 в 14:22
поделиться

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

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

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

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

Последний соответствует 1 100 100. 100.74 100.7 0.7 .7 .72

И он не соответствует пустой строке (например, \ d *.? \ d * would)

12
ответ дан Jimmy 3 September 2018 в 14:22
поделиться

Chrome 56 не принимает такие шаблоны (Chrome 56 принимает 11.11. дополнительный) с номером типа, используйте тип как текст как прогресс.

0
ответ дан rajesh_kw 3 September 2018 в 14:22
поделиться

Я попробовал один с моим проектом. Это позволяет номерам с + | - знаками.

/^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/
1
ответ дан Rino Raj 3 September 2018 в 14:22
поделиться

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

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

Группа 1 - это ваш номер с плавающей точкой, а группа 2 - только фракция.

1
ответ дан shady sherif 3 September 2018 в 14:22
поделиться

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

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

2
ответ дан SK9 3 September 2018 в 14:22
поделиться

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

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


alert(getInteger('-11.11'));
1
ответ дан STEEL 3 September 2018 в 14:22
поделиться
^[0-9]+(\.([0-9]{1,2})?)?$

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

7
ответ дан tchrist 3 September 2018 в 14:22
поделиться

Основной ответ: допустимые 5. или 5, входы

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

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

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

true => "0" / true => "0.00" / true => "0.0" / true => "0,00" / true => "0,0" / true => "1,2" true => "1.1" / true => "1" / true => "100" true => "100.00" / true => "100.0" / true => "1.11" / true = > "1,11" / false => "-5" / false => "-0.00" / true => "101" / false => "0.00.0" / true => "0.000" / true => " 000.25 "/ false =>" .25 "/ true =>" 100.01 "/ true =>" 100.2 "/ true =>" 00 "/ false =>" 5. " / false => "6," / true => "82" / true => "81,3" / true => "7" / true => "7.654"

0
ответ дан Vivien Pipo 3 September 2018 в 14:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: