【问题标题】:Regex to check only numbers(negative and positive)正则表达式只检查数字(负数和正数)
【发布时间】:2014-06-27 13:29:33
【问题描述】:

JSP 上有一个输入字段,用户可以在其中输入数字(负数和正数)。 我有一个 JS 函数,它检查输入字段上的每个按键事件不是数字,它应该用空白替换它。

var txt = $(elem).val();
if(!(txt.match(/^-?[0-9]*$/))) {    
    $(elem).val(txt.replace(/^-?[0-9]+/g, ''));
  }

我的 if 条件运行良好,但我无法创建用于替换的正则表达式。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    编辑:澄清了只应接受数值的问题

    您可以在删除所有非数字字符后检查数字是否为< 0

    // remove all non-numeric characters
    var txt = $(elem).val().replace(/[^\-0-9]/g, '');
    if(parseInt(txt) < 0)){
      // negative number
    }
    

    【讨论】:

    • 对不起 - 我的错:我把问题用错了方式 - 用户只能输入数字 - 负数和正数。我将编辑问题
    • 你为什么只检查负数。我不允许用户输入除数字以外的任何其他字符,但第一个字符可能是 - 符号(对于负数)。
    • 感谢您的帮助。 jsfiddle 非常接近,但在一种情况下会中断:----123----(用户可以多次输入 - 在数字前后签名。):(
    【解决方案2】:

    检查一个数字是否这样做

    var txt = $(elem).val(); 
    
    if (!isNAN(txt) && parseInt(txt) >=0) {
        //validate
    } else {
        // Invalidate
    }
    

    【讨论】:

    • 这行不通。假设如果用户输入 1a0,则 parseInt(1a0) 为 1,这是错误的。
    猜你喜欢
    • 2017-05-02
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多