Простое регулярное выражение для десятичной дроби с точностью 2
Что такое регулярное выражение для десятичного числа с точностью 2?
Действительные примеры:
123.12
2
56754
92929292929292.12
0.21
3.1
Недопустимые примеры:
12.1232
2.23332
e666.76
Десятичная точка может быть необязательной, а также могут быть включены целые числа.
Ответы
Ответ 1
Действительные маркеры регулярных выражений различаются в зависимости от реализации. Самая общая форма, о которой я знаю, будет:
[0-9]+(\.[0-9][0-9]?)?
Самый компактный:
\d+(\.\d{1,2})?
Оба предполагают, что вы должны иметь как минимум одну цифру до, так и одну после десятичной точки.
Чтобы потребовать, чтобы вся строка была числом этой формы, оберните выражение в начальный и конечный теги, например (в форме Perl):
^\d+(\.\d{1,2})?$
ДОБАВЛЕНО: Завершена дробная часть в()? чтобы сделать его необязательным. Имейте в виду, что это исключает такие формы, как "12." В том числе это будет больше похоже на ^\d+\.?\d{0,2}$
.
Ответ 2
^[0-9]+(\.[0-9]{1,2})?$
А поскольку регулярные выражения ужасны для чтения, а тем более понятны, вот многословный эквивалент:
^ # Start of string.
[0-9]+ # Must have one or more numbers.
( # Begin optional group.
\. # The decimal point, . must be escaped,
# or it is treated as "any character".
[0-9]{1,2} # One or two numbers.
)? # End group, signify it optional with ?
$ # End of string.
Вы можете заменить [0-9]
на \d
в большинстве реализаций регулярных выражений (в том числе PCRE, наиболее распространенный). Я оставил его как [0-9]
, поскольку мне кажется, что его легче читать.
Кроме того, вот простой Python script, который я использовал для проверки:
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
Ответ 3
Чтобы добавить необязательный знак минуса и запретить такие номера, как 015
(который можно ошибочно принять за восьмеричные числа), напишите:
-?(0|([1-9]\d*))(\.\d+)?
Ответ 4
Для чисел, у которых нет разделителя тысяч, мне нравится это простое, компактное регулярное выражение:
\d+(\.\d{2})?|\.\d{2}
или, не ограничиваясь точностью 2:
\d+(\.\d*)?|\.\d+
Последние матчи
1
100
100.
100.74
100.7
0.7
+0,7
.72
И он не соответствует пустой строке (например,\d *.?\d * будет)
Ответ 5
^[0-9]+(\.([0-9]{1,2})?)?$
Будет принято то, что нравится 12.
. Это не то, что принято, но если в случае, если вам нужно быть "гибким", это один из способов. И, конечно, [0-9]
можно заменить на \d
, но, я думаю, его более читаемый таким образом.
Ответ 6
Попробуйте это
(\\+|-)?([0-9]+(\\.[0-9]+))
Это также даст положительные и отрицательные знаки.
Ответ 7
Я использую это для двух знаков после запятой:
(^(\+|\-)(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
Ответ 8
preg_match("/^-?\d+[\.]?\d\d$/", $sum)
Ответ 9
В общем, то есть неограниченное число знаков после запятой:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.
Ответ 10
Вам не нужно принимать во внимание e
в e666.76
?
С
(e|0-9)\d*\d.\d{1,2)
Ответ 11
Я попробовал один с моим проектом.
Это позволяет номерам с + | - знаки также.
/^ (+ | -)? [0-9] {0} (.() {1} [0-9] {1}) {0,1} $/
Ответ 12
добавив мой ответ тоже, кто-то может найти его полезным или может быть правильным тоже.
function getInteger(int){
var regx = /^[-+]?[\d.]+$/g;
return regx.test(int);
}
alert(getInteger('-11.11'));
Ответ 13
Это со мной работало:
(-?[0-9]+(\.[0-9]+)?)
Группа 1 - это номер вашего плавающего номера, а группа 2 - только фракция.
Ответ 14
Chrome 56 не принимает такие шаблоны (Chrome 56 дополняет 11.11.) с номером типа, используйте тип как текст как прогресс.
Ответ 15
function DecimalNumberValidation() {
var amounttext = ;
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
alert('Please enter only numbers into amount textbox.')
}
else
{
alert('Right Number');
}
}
Функция будет проверять любое десятичное число, которое имеет число после запятой или нет, оно будет указывать "Правильное число", другое "Пожалуйста, введите только числа в текстовое поле суммы". появится предупреждающее сообщение.
Спасибо...:)