在输入中输入时,我将此函数与正则表达式结合使用以验证没有前导零的整数值:

$('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 =无效/ 0.012 =有效
不允许整数部分中的前导零:00.012 =无效/ 0.012 =有效
不允许在小数点后半部分使用尾随零:10.012000 =无效/ 10.012 =有效

最佳答案

您可以使用!运算符,如果字符串不只包含数字和RegExp字符,并且以两个或多个/[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/字符或false字符开头,或者结束,则返回"."的字符串是"0",或者字符串包含"."字符,后跟"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
)

关于javascript - 如何在键入时验证浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43669322/

10-11 06:51