2010-04-28 35 views
11
/^\d{1,2}[:][0-5][0-9]$/ 

là những gì tôi có. điều này giới hạn số phút đến 00-59. Nó không, tuy nhiên, giới hạn giờ giữa 0 và 12. Đối với sự giống nhau và tính đồng nhất, tôi muốn làm điều này với RegEx một mình nếu có thể.RegEx - Xác nhận thời gian ((h) h: mm)

Hơn nữa tôi muốn chữ số đầu tiên là tùy chọn. tức là 09:30 được chấp nhận cũng như 9:30. Tôi chơi xung quanh với phạm vi, nhưng một cái gì đó ra khỏi phạm vi luôn luôn là chấp nhận được.

Trả lời

5
/^(10|11|12|[1-9]):[0-5][0-9]$/ 

Tôi không nghĩ rằng bạn muốn 0:50 là thời gian hợp lệ.

13

Các trường hợp 0 ​​- 9 và 10 - 12 cần được xử lý riêng. (. Hai quy tắc có thể được kết hợp với |)

/^(?:0?\d|1[012]):[0-5]\d$/ 

Đây

  • (?:…) là một tổ chức phi chụp
  • x|y nghĩa phù hợp một trong hai mẫu
  • 0?\d trận 0-9 hoặc 00 - 09
  • 1[012] khớp với 10 - 12.
+0

Còn đồng hồ 24 giờ thì sao? –

17

Giả sử bạn đang làm việc trong thời gian 12 giờ, 0 không phải là giờ hợp lệ và cũng phải bị loại trừ (như chỉ ra bởi Jon). Dưới đây là một giải pháp cơ bản:

/^(0?[1-9]|1[012]):[0-5][0-9]$/ 

Một 24 giờ thời gian regex khớp mà hoạt động tương tự:

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

Cảm ơn RegEx tuyệt vời! –

1

Cảm ơn !!! Tôi sử dụng mã này Javascript bây giờ:?

function Check_arrival(time) { //Assuming you are working in 12 hour time, 0 is not a valid var patt = new RegExp("^(0?[1-9]|1[012]):[0-5][0-9]$"); var res = patt.test(time); return res; }

res = true | sai

+0

tốt mà bạn cung cấp cho lớp học RegExp javascript cách để làm điều này như OP được gắn thẻ là javascript. vẫn giống như câu trả lời @Trey Hunner đã cho xem xét 24 giờ của nó. –

0

này là hoàn hảo:^0 (? [0-9] [0-2]): [0- 5] [0-9] $

Lưu ý: 12 Hr Clock Chỉ

Đối với lần như: 0: 01- 12:59

hoặc

00:01 - 12:59

+0

Xin lỗi, đây là hình ảnh hoàn hảo :) (([0-9] [0-2]?) | ([0] [0-9])): [0-5] [0-9] $ – Byorn

+0

00: 00 - 12:59 hoặc 0:00 - 12:59 – Byorn

Các vấn đề liên quan