【问题标题】:regular expression to accept only integers and decimal numbers正则表达式只接受整数和十进制数
【发布时间】:2015-02-24 09:26:48
【问题描述】:

我正在使用 ext js。我有一个应该接受整数或十进制数的文本字段。我正在使用正则表达式来实现它。但它不起作用。

这是我的代码...

    {
        xtype: 'textfield',
        id: 'myField',
        fieldLabel: 'Text Field(numbers-only)',                      
        maskRe: /[0-9]+(\.[0-9]+)?$/

    }

使用上述正则表达式时,Textfield 不接受 .(dot)

我该如何解决这个问题??

【问题讨论】:

  • . 既不是整数也不是小数。为什么要接受它?
  • “小数”你一定是指“小数分隔符”,对吧?删除$ 符号,它使模式只匹配输入字符串的末尾。

标签: regex extjs


【解决方案1】:
  • 在小数点前使用 \d* 而不是 \d+ 来匹配零个或多个数字。
  • 还要添加锚点(^ 和 $),否则只要有任何匹配,它就会通过 可用的。
  • 这也会验证一个空字符串,因此如果需要,您可以使用一个
    向前看以确保至少有一位数字:

使用下面的代码:

 {
         xtype: 'textfield',
         id: 'myField',
         fieldLabel: 'Text Field(numbers-only)',                      
         maskRe: /^[1-9]\d*(\.\d+)?$/

}

根据您的理解目的,请参阅此链接Click Here

【讨论】:

  • 两种正则表达式模式都不会验证空行。您有一个必须匹配的[1-9] 字符。原来的正则表达式有[0-9]+,它也会匹配一些东西。
  • 我已经在上面的链接中提到过在线签到。这适用于整数和十进制数字,不适用于点(。)。
【解决方案2】:

不确定我是否完全理解您的需求,但这可以吗?

/^[0-9]+(\.[0-9]*)?$/

这将接受:

  • 123
  • 0.123
  • 123.

【讨论】:

    【解决方案3】:

    如果你想限制小数位数,可以使用这个:

    ^\d+(\.\d{1,2})?$
    

    这将允许您传递至少 1 位但不超过 2 位的小数位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      相关资源
      最近更新 更多