Проверка валидации
Пожалуйста, помогите мне написать JavaScript-подтверждение для валюты/денежного поля.
Поэтому, пожалуйста, предоставьте любые регулярные выражения, если у :)
Кроме того, для моего региона не нужны символы валюты, такие как '$' в поле.
Только десятичные числа должны быть включены для проверки как специальные символы., а также числа.
Ответы
Ответ 1
Вы можете использовать regexp:
var regex = /^\d+(?:\.\d{0,2})$/;
var numStr = "123.20";
if (regex.test(numStr))
alert("Number is valid");
Если вы не хотите быть строгим с десятичными знаками, вам может быть проще использовать унарный оператор (+
) для перевода на число, чтобы проверить его достоверность:
var numStr = "123.20";
var numNum = +numStr; // gives 123.20
Если строка номера недействительна, она вернет NaN
(Not a Number), что вы можете легко проверить:
var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
alert("numNum is not a number");
Конечно, это позволит пользователю добавлять больше десятичных знаков, но вы можете нарезать все лишние, используя number.toFixed(2)
, чтобы округлить до двух знаков после запятой. parseFloat
гораздо менее строг со входом и вырвет первое число, которое он может найти из строки, если эта строка начинается с числа, например. parseFloat("123abc")
даст 123
.
Ответ 2
Я построил свой ответ из принятого ответа.
var regex = /^[1-9]\d*(((,\d{3}){1})?(\.\d{0,2})?)$/;
^[1-9]
Номер должен начинаться с 1-9
\d*
Затем число может содержать любое количество цифр
(...)$
посмотрите на следующую группу с конца (...)$
(...)?(...)?
Ищите две группы по выбору. Первая для запятой, вторая для десятичной.
(,\d{3}){1}
Ищите одно появление запятой, за которым следует ровно три цифры
\.\d{0,2}
Ищите десятичное число, за которым следует ноль, одна или две цифры.
Это регулярное выражение работает с этими правилами:
- Допустимыми значениями являются числа 0-9, запятая и десятичная точка.
-
Если клиент вводит более одной десятичной запятой или более одной запятой, значение недействительно и не будет принято.
-
Примеры недопустимых входных значений
- Примеры допустимых входных значений
- 1,23
- 1000
- 3967.
- 23
- 1.2
- 999,999.99
Пример можно увидеть здесь:
http://jsfiddle.net/rat141312/Jpxu6/1/
UPDATE
изменив [1-9]
в регулярном выражении на [0-9]
, можно также проверить любое число меньше, чем 1
. Пример: 0,42, 007
Ответ 3
/[1-9]\d*(?:\.\d{0,2})?/
[1-9] - must start with 1 to 9
\d* - any number of other digits
(?: )? - non capturing optional group
\. - a decimal point
\d{0,2} - 0 to 2 digits
это работает для вас?
или parseFloat:
var float = parseFloat( input );
Ответ 4
Для меня его рабочий штраф для индийской валюты в INR
var regex = /^[1-9]{0,2}(,{0,1})(\d{2},)*(\d{3})*(?:\.\d{0,2})$/;
var a = '1,111.11';
regex.test(a);