我需要一个有效时区的正则表达式,尝试以下方法。
但是我不确定。
请帮助我找出以下正则表达式中的任何错误。
编辑:
这里冒号和分钟是可选的。我如何将其更改为强制性。
如果没有分钟,则用户应输入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")
}

最佳答案

以下正则表达式将时区与必需的两位数小时/分钟或字母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

07-27 13:22