首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在键盘上验证浮点数

如何在键盘上验证浮点数
EN

Stack Overflow用户
提问于 2017-04-27 23:08:47
回答 2查看 2.4K关注 0票数 0

在输入输入时,我使用这个带正则表达式的函数来验证没有前导零的整数值:

代码语言:javascript
代码运行次数:0
运行
复制
$('input.input-number').keyup(function(e) {
    var regexp = (/[^0-9]|^0+(?!$)/g);

    if (regexp.test(this.value)) {
        this.value = this.value.replace(regexp, '');
    }
});

如何调整它以考虑浮点数。该职能应:

  • 不允许多个“。”签名: 123.342.08 =无效/ 123.34208 =有效
  • 不允许“。”字符串起始处的签名:.012 = not / 0.012 = valid
  • 不允许整数部分中的前导零: 00.012 =非有效/ 0.012 =有效
  • 不允许尾随零在小数部分: 10.012000 =无效/ 10.012 =有效
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-27 23:27:21

您可以使用!操作符,RegExp /[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/,其中如果字符串不包含数字和"."字符,以两个或多个"0"字符或"."字符开头,或者字符串的结尾是"0",或者字符串包含"."字符,后面跟着"."或一个或多个数字,后面跟着".",否则返回trueRegExp.prototype.test()

代码语言:javascript
代码运行次数:0
运行
复制
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
)

票数 2
EN

Stack Overflow用户

发布于 2017-04-28 23:20:17

在@guest271314的帮助下,我最终升级了初始函数,该函数现在可以处理整数或浮点输入验证(但是,不考虑小数点部分中的尾随零)。

这是我用来验证整数值或浮点值的数字输入的方法(使用jQuery的低调风格):

代码语言:javascript
代码运行次数:0
运行
复制
$('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, '');
    }
});
代码语言:javascript
代码运行次数:0
运行
复制
<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">

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43669322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档