Это не очень ответ, но я бы сказал, что это работает отлично, лично
Сказав это, поскольку не имеет значения, каковы значения (вы использовали 0 , 1, 2), я бы использовал значимую строку в случае, если вы когда-либо хотели вывести текущее значение.
Действующие маркеры регулярных выражений различаются в зависимости от реализации. Наиболее общей формой, которую я знаю, будет:
[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})?$
, чтобы остановить повторение и дать ограничение на всю часть десятичного значения.
function DecimalNumberValidation() {
var amounttext = ;
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
alert('Please enter only numbers into amount textbox.')
}
else
{
alert('Right Number');
}
}
будет проверять любое число в десятичной дроби, которое имеет десятичные числа или нет, оно будет указывать «Правильный номер» другим «Пожалуйста, введите только числа в текстовое поле суммы». появится предупреждающее сообщение.
Спасибо ...:)
Вам не нужно принимать во внимание e
в e666.76
?
С
(e|0-9)\d*\d.\d{1,2)
Я использую это для двух знаков после запятой: (^(\+|\-)(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
^[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
Для чисел, у которых нет разделителя тысяч, мне нравится это простое компактное регулярное выражение:
\d+(\.\d{2})?|\.\d{2}
или, не ограничиваясь точностью 2:
\d+(\.\d*)?|\.\d+
Последний соответствует 1 100 100. 100.74 100.7 0.7 .7 .72
И он не соответствует пустой строке (например, \ d *.? \ d * would)
Chrome 56 не принимает такие шаблоны (Chrome 56 принимает 11.11. дополнительный) с номером типа, используйте тип как текст как прогресс.
Я попробовал один с моим проектом. Это позволяет номерам с + | -
знаками.
/^(\+|-)?[0-9]{0,}((\.){1}[0-9]{1,}){0,1}$/
Это со мной работало:
(-?[0-9]+(\.[0-9]+)?)
Группа 1 - это ваш номер с плавающей точкой, а группа 2 - только фракция.
В общем, то есть неограниченное число знаков после запятой:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.
добавив мой ответ тоже, кто-то может найти его полезным или может быть правильным тоже.
function getInteger(int){
var regx = /^[-+]?[\d.]+$/g;
return regx.test(int);
}
alert(getInteger('-11.11'));
^[0-9]+(\.([0-9]{1,2})?)?$
Будет делать такие вещи, как 12.
. Это не то, что принято, но если в случае, если вам нужно быть «гибким», это один из способов. И, конечно, [0-9]
можно заменить на \d
, но я думаю, что это более читаемо.
Основной ответ: допустимые 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"
blockquote>