Часовой пояс регулярного выражения

Мне нужно регулярное выражение для допустимого часового пояса, попробовал следующее.
Но я в этом не уверен.
Пожалуйста, помогите мне найти что-нибудь неправильное в следующем регулярном выражении.

редактировать:

здесь двоеточие и минуты являются необязательными. как я могу изменить его на обязательный.
Если нет минут, пользователь должен ввести 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")
}

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

видеть жить дальше regex101.com.