【问题标题】:RegExp: Allow digits 0 to 1439 without any spaces for a textfield which supports both MySQL and OracleRegExp:对于同时支持 MySQL 和 Oracle 的文本字段,允许数字 0 到 1439 没有任何空格
【发布时间】:2015-09-24 11:56:42
【问题描述】:

我有一个时间字段,允许 (24*60)-1 分钟,即 1439 分钟。 最短 0 分钟最长 1439 分钟。为此,我需要一个正则表达式。

对于同时支持 mysql 和 oracle 的文本字段,需要一个只允许 0 到 1439 之间没有任何空格的数字的正则表达式。

它必须允许 0 或 1 或 25 或 00 或 001 或 0000。但不允许 00 0 或 1440。

如果可能,请给出一个同时支持 mysql 和 oracle 的正则表达式,或者为 mysql 和 oracle 提供两个单独的正则表达式。

【问题讨论】:

  • 时间字段是什么样的?为什么不只使用整数?
  • 使用BETWEEN 0 AND 1439。不要使用正则表达式来处理更好的处理方式。
  • 嗨,戈登.. 对不起。它只是一个文本字段,如果键入 INT。但是我们必须允许用户输入应该在 0 到 1339 位范围内的数字。 @戈登林诺夫
  • 另外,1440 - 1 = 1439,而不是 1339。
  • 如果您需要从 0 到 1439 的范围,可以使用 ^0*([0-9]{1,3}|1[0-3][0-9]{2}|14[0-3][0-9])$

标签: jquery regex validation


【解决方案1】:

如果值包含整数,则转换为整数并使用between

where cast(time as int) between 0 and 1339

但是,您可能需要确保该值实际上是一个数值(您可以为此使用正则表达式)。我不鼓励您使用数字表达式进行比较。虽然可能,但表达方式很复杂,代码的意图也不清楚。

很遗憾,您不能使用:

where time between '0' and '1339'

因为字符串比较不同于数字比较(例如,此逻辑不接受以 '2' 开头的任何内容)。

【讨论】:

  • 我只需要一个正则表达式。我需要从 UI 本身处理这个问题。在保存此字段值之前,我需要显示一条验证消息。在 oracle 和 mysql 中都需要一个正则表达式。@ Gordon
  • @Arcana 不,你真的不知道。你说要在UI本身验证,然后再说用SQL来验证?将值转换为整数并进行适当的数字比较要好得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2020-11-09
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多