正则表达式以验证空字段

时间:2014-03-22 17:31:14

标签: regex

我有一个使用正则表达式来验证小数和自然数的表单,但是我有一个问题,这不验证空字段。我的常规表达是这样的:

"^([0-9])+\.[0-9]|[0-9]$"

为了使这个正则表达式验证空字段,我该怎么办?感谢。

4 个答案:

答案 0 :(得分:3)

使用此正则表达式处理数字(仅正数)和空数。

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

正则表达式的解释是:

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    [0-9]+                   any character of: '0' to '9' (1 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    (?:                      group, but do not capture (optional
                             (matching the most amount possible)):
--------------------------------------------------------------------------------
      \.                       '.'
--------------------------------------------------------------------------------
      [0-9]+                   any character of: '0' to '9' (1 or
                               more times (matching the most amount
                               possible))
--------------------------------------------------------------------------------
    )?                       end of grouping
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string

答案 1 :(得分:1)

你是说这个吗?

"^(?:([0-9])+\.[0-9]*|[0-9]|)$"

此正则表达式包含无字符的额外可能性。

答案 2 :(得分:0)

尝试:

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

此:

  • 解决了小数点后只接受1位数的问题,
  • 解决了您只接受单个数字的自然数的问题,
  • 修复了两种情况下字段的开头和结尾都不匹配的问题,
  • 允许0位,这是一个空字段。

答案 3 :(得分:0)

谢谢你们,

我证明了你的所有建议,但它根本没有解决我的问题, 还是允许进入空场,我也许不能解释得很好, 我希望我的正则表达式不允许注册空字段。