我有一个输入框,只能取0到100之间的值(允许浮点数)。 是否有任何函数可以将输入框中的字符串值转换为十进制,以便我可以比较它?
我已经尝试过parseFloat但是如果string =“10Hi”,parseFloat仍会返回10.
答案 0 :(得分:0)
您可以使用parseFloat功能:
parseFloat('12.5')
用于验证,您可以使用正则表达式:
var isValid = (inputStr.match(/^-?\d*(\.\d+)?$/));
if (isValid == null)
alert('in valid');
else
alert('valid');
答案 1 :(得分:0)
嗯,isFinite怎么样?
isFinite(10) // true
isFinite('10.1'); // true
isFinite('10Hi') // false
答案 2 :(得分:0)
您可以使用以下条件:
var str = "12.5", number;
if(isFinite(str) && str.indexOf(".") == -1)
number = parseFloat(str);
<强>更新强>
如果您只需要获取确切的数字,那么您可以使用如下所示:
var str = "12.5", number;
if(isFinite(str))
number = +str;
因此它总是返回包含浮动值的有限数。
如果str为'0x5f',则返回值为95,因为它也是有效的十六进制数check here。
答案 3 :(得分:0)
$(".decimal").each(function(){
var v = $(this).val();
//pattern: integer or decimal
var valid = /^\d+$/.test(v) || /^\d+\.\d+$/.test(v);
});
答案 4 :(得分:0)
要检查输入是否为0到100(包括0和100)的十进制浮点数,可以使用正则表达式排除'0x5e'
之类的字符串(这是0到100之间数字的有效表示),然后是字符串可以转换为数字以测试该值是否在允许的范围内。
e.g。
function testValue(n) {
var re = /^\s*\d*(\d\.?|\.?\d)\d*\s*$/;
var num = Number(n)
return re.test(n) && n >= 0 && n <= 100;
}
['12','12.','.12','12.2','0x5e'].forEach(function(v) {
console.log(v + ' : ' + testValue(v));
});
12 : true
12. : true
.12 : true
12.2 : true
0x5e : false