【问题标题】:Regular expression timezone正则表达式时区
【发布时间】:2014-05-01 20:10:36
【问题描述】:

我需要一个有效时区的正则表达式,尝试了以下一个。
但我不确定。
请帮我找出以下正则表达式中的任何错误。

编辑:

这里冒号和分钟是可选的。我怎样才能将其更改为强制。
如果没有分钟,用户应输入 00 (+05:00)。 请帮我解决这个问题。

var chkzone = "+05:30"
if(chkzone .match(/^(Z|[+-](?:2[0-3]|[01]?[0-9])(?::?(?:[0-5]?[0-9]))?)$/))
{
    alert('works out');
}
else
{
    alert("Time zone wrong")
}

【问题讨论】:

  • 这看起来像 JavaScript。为什么会有 Java 标签?
  • 我认为更多的潜在输入示例,或者至少更好地描述什么是“有效时区”会有所帮助。
  • 这适用于 +05 或 +05:30 。冒号和分钟是可选的。
  • 您是否尝试过类似regexsr.oxgva.com 的方法来做一些测试?
  • 您的正则表达式似乎有效,但我不理解加/减 24 小时格式的兴趣(例如 +23:45)

标签: javascript regex


【解决方案1】:

以下正则表达式匹配具有强制性两位数小时/分钟或字母 Z 的时区:

/^(?:Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])$/

说明:

^            # Start of string
(?:          # Match the following non-capturing group:
 Z           # Either a literal Z
|            # or
 [+-]        # a plus or minus sign
 (?:         # followed by this non-capturing group:
  2[0-3]     # Either a number between 20 and 23
 |           # or
  [01][0-9]  # a number between 00 and 19
 )           # End of inner non-capturing group
 :           # Match a literal colon
 [0-5][0-9]  # Match a number between 00 and 59
)            # End of outer non-capturing group
$            # End of string

live on regex101.com

【讨论】:

  • +0:0 或 +9:8 无效。如何限制这个呢?即 +05:30 有效但 +5:30 无效
  • @Dibish:通过删除? 量词,这意味着“前一个标记的零个或一个匹配”。我更新了正则表达式并添加了一个测试站点的链接。
  • Regx 必须进一步完善。时区的范围从 -12:00 到 +14:00,并且始终不会逐渐增加 00:30。无论如何,这帮助我验证了一个几乎没有变化的时间选择器:) 谢谢...
猜你喜欢
  • 2016-01-06
  • 1970-01-01
  • 2016-11-18
  • 2012-02-22
  • 2016-03-12
  • 2020-03-24
  • 2023-04-07
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多