Помогите со мной пишущий Проверку JavaScript для поля валюты/денег.
Поэтому обеспечьте любые регулярные выражения, если Вы имеете :)
Кроме того, для моего региона не нуждайтесь ни в каких обозначениях денежной единицы как '$' в поле.
Только десятичные числа должны быть включены для проверки как специальные символы., наряду с числами.
Вы можете использовать регулярное выражение:
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
(не число), что вы можете проверить для легко:
var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
alert("numNum is not a number");
Это, конечно, позволит пользователю добавлять больше десятичных знаков, но вы можете убрать лишнее, используя number.toFixed (2)
, чтобы округлить до 2 десятичных знаков. parseFloat
гораздо менее строг к вводу и будет извлекать первое число, которое может найти, из строки, если эта строка начинается с числа, например. parseFloat ("123abc")
даст 123
.
/[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 );