Làm cách nào bạn có thể kết hợp thời gian 12 giờ trong một regex-- nói cách khác phù hợp với 12:30 nhưng không phải là 14:74? Cảm ơn!Làm thế nào để bạn kết hợp thời gian 12 giờ hh: mm trong một regex?
Trả lời
Như thế này: ((?:1[0-2]|0\d)\:(?:[0-5]\d))
nếu bạn muốn nhập số 0 đầu cho giờ, ((?:1[0-2]|\d)\:(?:[0-5]\d))
nếu bạn không và ((?:1[0-2]|0?\d)\:(?:[0-5]\d))
nếu bạn không quan tâm.
Điều đó sẽ bắt buộc 0 hàng đầu phải không? ví dụ. sẽ phù hợp với 05:02 nhưng không phải là 5:02? – Joe
cố định rằng: bạn muốn, bạn không hoặc bạn không quan tâm :) –
^(?:(?:1?(?:[0-2]))|[1-9]):[0-5][0-9]
Đây là ví dụ về sự cố "này tôi biết, tôi sẽ sử dụng cụm từ thông dụng!" là giải pháp sai. Bạn có thể sử dụng cụm từ thông dụng để kiểm tra định dạng đầu vào của bạn là chữ số có chữ số-dấu hai chữ số, sau đó sử dụng logic lập trình để đảm bảo rằng các giá trị nằm trong phạm vi bạn mong đợi. Ví dụ:
/(\d\d?):(\d\d)/
if ($1 >= 1 && $1 <= 12 && $2 < 60) {
// result is valid 12-hour time
}
Điều này dễ đọc và dễ hiểu hơn một số ví dụ về regex mà bạn thấy trong các câu trả lời khác tại đây.
Hoặc nó là một ví dụ mà bạn đang điền vào một cái gì đó yêu cầu biểu thức thông thường ... – Rodger
Tôi tin rằng sự thất bại ở trên ít nhất một cách, đặc biệt là về các chuỗi như "13:00" (các trận đấu của Keith "3:00" trong trường hợp đó).
Điều này cần xử lý vấn đề đó cũng như những vấn đề khác được đưa ra.
([01][0-2]|(?<!1)[0-9]):([0-5][0-9])
(0?\d|1[0-2]):([0-5]\d)
Điều đó sẽ phù hợp với tất cả mọi thứ từ 00:00 đến 12:59. Đó là 13 giờ, nhân tiện. Nếu bạn không muốn để phù hợp với 0:00-00:59, thử loại này thay vì:
([1-9]|1[0-2]):([0-5]\d)
Bạn có thể sử dụng cái này:
/((?:1[0-2])|(?:0?[0-9])):([0-5][0-9]) ?([ap]m)/
/1 => hour
/2 => minute
/3 => am/pm
Các trận đấu sau đệm và phi độn giờ một giờ 24 giờ (tức là 00:00 - 23:59) từ 00:00 đến 12:59.
(?:(?<!\d)[0-9]|0[0-9]|1[0-2]):[0-5][0-9]
Matches:
- 00:00
- 00:58
- 01:34
- 1:34
- 8:35
- 12:23
- 12:59
Nonmatches:
- 13:00
- 13:23
- 14:45
- 23:59
tại sao regex?bạn có thể làm số nguyên đơn giản sẽ kiểm tra này
$str = "12:74";
list($h , $m) = explode(":",$str);
if (($h <=12 && $h >=0 ) && ($m <=59 && $m >=0)) {
print "Time Ok.";
}else{
print "Time not ok";
}
Vâng, nhưng nếu '$ str' bằng '" foozah "', nó sẽ phá vỡ kịch bản của bạn (vì không có chỉ mục 1). Ngoài ra, nếu '$ str' bằng' "foo: zah" ', tập lệnh của bạn sẽ nói rằng * * là * một thời gian hợp lệ, nhưng tôi thích nghĩ rằng đó không phải là trường hợp. –
^(00|0[0-9]|1[012]):[0-5][0-9] ?((a|p)m|(A|P)M)$
^
- Trận đầu của chuỗi.
(00|0[0-9]|1[012])
- bất kỳ số nào có hai chữ số lên đến 12. Yêu cầu hai chữ số.
:
- Trận dấu hai chấm
[0-5][0-9]
- Trận bất kỳ số hai chữ số từ 00 đến 59.
?
- Trận một không gian zero hoặc một lần.
((a|p)m|(A|P)M)
- Khớp giờ sáng hoặc chiều, không phân biệt chữ hoa chữ thường.
$
- Khớp phần cuối của chuỗi.
Đây là mẫu 12 giờ có xác thực AM và PM.
TIME12HOURSAMPM_PATTERN = "^(?:(?<!\\d)[0-9]|0[0-9]|1[0-2]):[0-5][0-9] ?((a|p)m|(A|P)M)$";
- 1. Mẫu regex cho HH: MM: Chuỗi thời gian SS
- 2. Làm thế nào để chuyển đổi một thời gian 24 giờ đến 12 giờ trong VB.net như hh: mm AM/PM
- 3. Jquery - Lấy thời gian trong HH: MM giữa hai ngày
- 4. Làm cách nào để chuyển đổi chuỗi HH: MM: SS thành thời gian thời gian UNIX?
- 5. Làm thế nào để bạn chuyển đổi giữa thời gian 12 giờ và 24 giờ trong PHP?
- 6. Cách đặt giờ ngày bằng HH: mm: ss = 00:00:00 thay vì 12:00:00?
- 7. WPF DataGrid thời gian định dạng lĩnh vực hh: mm
- 8. Chuyển đổi dd/MM/yyyy hh: mm: ss.fff từ Chuỗi thành Ngày giờ trong C#
- 9. Lấy thời gian từ MySQL dưới dạng HH: MM
- 10. Làm thế nào để chuyển đổi một số nguyên (thời gian) thành HH: MM: SS :: 00 trong SQL Server 2008?
- 11. Chuyển đổi dấu thời gian trong Oracle cho YYYY-MM-DD HH: Định dạng MM: SS
- 12. Nhận thời gian hiện tại dưới dạng chuỗi YYYY-MM-DD-HH-MM-SS
- 13. Làm thế nào để hiển thị thời gian ở định dạng 12 giờ trong Objective-C?
- 14. regex thời gian 24 giờ cho HTML 5
- 15. Làm thế nào để định dạng ngày trong định dạng HH/mm/yyyy HH: mm: ss trong JavaScript?
- 16. Thời gian chuyển đổi (YYYY-MM-DD-HH: MM: SS) ngày
- 17. Làm cách nào để chuyển đổi hh: mm: ss thành hh: mm trong SQL Server?
- 18. Làm cách nào để chuyển đổi thời gian 24 giờ thành 12 giờ?
- 19. RegEx - Xác nhận thời gian ((h) h: mm)
- 20. Làm thế nào để chuyển đổi 24 giờ thời gian Chuỗi thành 12 hr định dạng thời gian Chuỗi
- 21. java.text.ParseException: ngày Unparseable: yyyy-MM-dd HH: mm: ss.SSSSSS
- 22. Java: Làm thế nào để bạn chuyển đổi dấu thời gian UTC thành giờ địa phương?
- 23. Cách định dạng thời gian thành HH: MM: SS trong datalabel
- 24. Nhận giờ và phút (HH: MM) từ ngày
- 25. Làm cách nào để chuyển đổi thời gian đồng hồ 12 giờ thành giờ đồng hồ 24 giờ bằng PHP?
- 26. Làm thế nào để kết hợp ngày và thời gian vào một dấu thời gian trong db2?
- 27. Làm cách nào để hợp nhất ngày và giờ làm ngày giờ trong tập lệnh Bảng tính Google Apps?
- 28. Làm thế nào để bạn đặt thời gian và chỉ thời gian trong lịch trong Java?
- 29. C++: làm thế nào để có được thời gian thực tế với thời gian và giờ địa phương?
- 30. Cách chuyển đổi số thập phân thành thời gian, ví dụ: HH: MM: SS
tôi đã cố gắng này: (1 [0-9]?): ([0-9] {2}) nhưng điều đó phù hợp 14:74! –
Số giờ có được đệm không? – MyItchyChin