我使用带有正则表达式的函数来验证输入时没有前导零的整数值:
$('input.input-number').keyup(function(e) {
var regexp = (/[^0-9]|^0+(?!$)/g);
if (regexp.test(this.value)) {
this.value = this.value.replace(regexp, '');
}
});
如何调整它以考虑浮点数。 该功能应该:
答案 0 :(得分:2)
如果字符串不包含数字和!
字符,则可以使用RegExp
运算符/[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/
false
返回"."
,以2开头或者更多"0"
字符或"."
字符或字符串结尾为"0"
,或字符串包含"."
字符后跟"."
或一个或多个数字后跟{ {1}},否则使用"."
true
RegExp.prototype.test()
答案 1 :(得分:0)
感谢@ guest271314的帮助,我终于升级了现在可以处理整数或浮点输入验证的初始函数(但是,不需要处理小数部分中的尾随零)。
这是我用来验证整数或浮点值的数字输入(使用jQuery的不显眼的样式):
$('input[name="number"]').keyup(function(e) {
var float = parseFloat($(this).attr('data-float'));
/* 2 regexp for validating integer and float inputs *****
> integer_regexp : allow numbers, but do not allow leading zeros
> float_regexp : allow numbers + only one dot sign (and only in the middle of the string), but do not allow leading zeros in the integer part
*************************************************************************/
var integer_regexp = (/[^0-9]|^0+(?!$)/g);
var float_regexp = (/[^0-9\.]|^\.+(?!$)|^0+(?=[0-9]+)|\.(?=\.|.+\.)/g);
var regexp = (float % 1 === 0) ? integer_regexp : float_regexp;
if (regexp.test(this.value)) {
this.value = this.value.replace(regexp, '');
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" data-float="1" id="number" name="number" placeholder="integer">
<input type="text" data-float="0.1" id="number" name="number" placeholder="float">
&#13;