在输入输入时,我使用这个带正则表达式的函数来验证没有前导零的整数值:
$('input.input-number').keyup(function(e) {
var regexp = (/[^0-9]|^0+(?!$)/g);
if (regexp.test(this.value)) {
this.value = this.value.replace(regexp, '');
}
});
如何调整它以考虑浮点数。该职能应:
发布于 2017-04-27 15:27:21
您可以使用!
操作符,RegExp
/[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/
,其中如果字符串不包含数字和"."
字符,以两个或多个"0"
字符或"."
字符开头,或者字符串的结尾是"0"
,或者字符串包含"."
字符,后面跟着"."
或一个或多个数字,后面跟着"."
,否则返回true
和RegExp.prototype.test()
。
const re = /[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/;
console.log(
!re.test("123.342.08") // false
, !re.test(".012") // false
, !re.test("00.012") // false
, !re.test("10.012000") // false
, !re.test("0.012") // true
, !re.test("10.012") // true
, !re.test("123.34208") // true
)
发布于 2017-04-28 15:20:17
在@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">
https://stackoverflow.com/questions/43669322
复制