Подтвердить что ты не робот

Проверка валидации

Пожалуйста, помогите мне написать JavaScript-подтверждение для валюты/денежного поля.

Поэтому, пожалуйста, предоставьте любые регулярные выражения, если у :)

Кроме того, для моего региона не нужны символы валюты, такие как '$' в поле.

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

4b9b3361

Ответ 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.2.3
    • 1,2,4
  • Примеры допустимых входных значений
    • 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);