检查给定的值是正数还是小数最多两位的浮点数
check if a given value is a positive number or float with maximum two decimal places
我正在尝试实现输入文本控件的验证检查,该控件应该只允许正整数值或具有最大2位小数的浮点数。
下面是我尝试过的方法:https://jsfiddle.net/99x50s2s/49/
HTMLEnter Price: <input type="text" id="price"/> (Example: 10, 10.50. Do not include $ symbol.)
<br/>
<br/>
<button type="button" id="check1">Check Method 1</button> (Fails when the value is 1.00)
<br/>
<br/>
<button type="button" id="check2">Check Method 2</button> (Passes when the value is 45f)
<br/>
<br/>
<button type="button" id="check3">Check Method 3</button> (Passes when the value is -10)
代码:var price = $('#price');
$('#check1').on('click', function(){
var val = $.trim(price.val());
var num = Number(val);
if (String(num) === val && num >= 0)
{
alert('Valid');
}
else
{
alert('Invalid');
}
});
$('#check2').on('click', function(){
var val = $.trim(price.val());
var num = Number(val);
if (((typeof num === 'number') && (num % 1 === 0)) || parseFloat(val))
{
alert('Valid');
}
else
{
alert('Invalid');
}
});
$('#check3').on('click', function(){
var val = $.trim(price.val());
if ($.isNumeric(val))
{
alert('Valid');
}
else
{
alert('Invalid');
}
});
期望:应该传递的值是正数和浮点数,最多有2个小数。(例10,10.50)
我看了各种答案在stackoverflow,但不符合我的期望。
您真正寻找的是值与模式匹配,而不是它的值是什么。为此,您最好使用正则表达式。具体来说,这应该捕获您正在寻找的值:
/^'d+('.'d{1,2})?$/
说:
- 开始时的值(
^
) - 匹配1个或多个数字(
'd+
) - 后接选项小数点和1或两位数字(
('.'d{1,2})?
) - 和值(
$
) 结束前没有其他字符
这将强制执行所有规则,允许您执行单个有效性检查,而不是多个有效性检查。
编辑:下面是如何使用它的一个例子:
function checkNumber(sNum) {
var pattern = /^'d+('.'d{1,2})?$/;
console.log(sNum + " is " + ((pattern.test(sNum)) ? "" : "not ") + "valid.");
}
checkNumber("1"); // 1 is valid.
checkNumber("-1"); // -1 is not valid.
checkNumber("1234"); // 1234 is valid.
checkNumber("1."); // 1. is not valid.
checkNumber("1.0"); // 1.0 is valid.
checkNumber("1.12"); // 1.12 is valid.
checkNumber("1.123"); // 1.123 is not valid.
我想应该是:
var num = Number(val);
if (!isNaN(num)
&& num > 0
&& num == num.toFixed(2))
{
// Valid
}
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 将数字四舍五入到两位小数
- 将浮点数排序为自然数
- 使用javascript从字符串中提取浮点数
- 将数字格式化为货币,两位小数
- 为大型地理位置的坐标生成浮点数
- 用于输入文本字段的Javascript验证器,仅用于两位小数
- 如何使用Javascript使浮点数的精度相同
- 如何将浮点数格式化为两位数
- 如何通过 javascript 在浮点数中保留小数点数后的 2 位数字
- 获取 2 位浮点数未按预期工作
- 读取 JavaScript 中包含 32 位浮点数的二进制文件
- 我怎样才能对浮点数进行四舍五入,使小数点后只有两个尾随数字
- 将字符串转换为浮点数,最多 2 位小数
- 如何将两个浮点数填充到其中一个浮点数的精度
- 两个浮点数的安全除法
- 什么位模式表示双精度浮点数的最大值?
- Jquery验证:带正/负的浮点数,小数点为6位2
- 检查给定的值是正数还是小数最多两位的浮点数