我想要一个正则表达式来匹配HH:MM格式的时间。这就是我所拥有的,它的确有效:
^[0-2][0-3]:[0-5][0-9]$
这匹配从00:00到23:59的所有内容。
但是,我想改变它,所以0:00和1:00等也匹配以及00:00和01:30。即,使最左边的数字可选,以匹配HH:MM以及H:MM。
任何想法如何改变?我需要这个工作在JavaScript和PHP。
答案 0 :(得分:300)
您的原始正则表达式存在缺陷:例如,它与04:00
不匹配。
这可能会更好:
^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$
答案 1 :(得分:44)
以上都不适合我。 最后我用了:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
<强>逻辑:强>
第一个数字(小时)是:
0到19之间的数字 - &gt; [0-1]?[0-9]
(允许一位数字)
或
数字在20-23之间。 2[0-3]
第二个数字(分钟)始终是介于00和59之间的数字 - &gt; [0-5][0-9]
(不允许一位数字)
答案 2 :(得分:22)
HH:MM 12小时格式,可选前导0
/^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
HH:MM 12小时格式,可选的前导0,强制性子句(AM / PM)
/((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
HH:MM 24小时,前导0
/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
HH:MM 24小时格式,可选前导0
/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
HH:MM:SS 24小时格式,前导0
/(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)/
答案 3 :(得分:6)
你可以使用这个24H,秒是可选的
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
答案 4 :(得分:4)
最好的是HH:MM,不会冒任何风险。
^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
答案 5 :(得分:2)
您可以使用此正则表达式:
^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$
如果要排除00:00,可以使用此表达式
^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$
第二个表达式是更好的选项,因为有效时间是00:01到00:59或0:01到23:59。您可以根据您的要求使用其中任何一种。 Regex101 link
答案 6 :(得分:2)
令人惊讶的是我发现实际上所有这些并不完全覆盖它,因为它们不适用于0:0的较短格式午夜,而且有些也不适用于00:00,我使用并测试了以下内容:
^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$
答案 7 :(得分:1)
匹配
2:9 2:09 2:59 02:9 02:09 02:59 23:59
使用它:
^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$
答案 8 :(得分:0)
您可以使用以下正则表达式:
^[0-1][0-9]:[0-5][0-9]$|^[2][0-3]:[0-5][0-9]$|^[2][3]:[0][0]$
答案 9 :(得分:0)
以下正则表达式将有助于验证hh:mm格式
^([0-1][0-9]|2[0-3]):[0-5][0-9]$
答案 10 :(得分:0)
声明
private static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
public boolean validate(final String time) {
pattern = Pattern.compile(TIME24HOURS_PATTERN);
matcher = pattern.matcher(time);
return matcher.matches();
}
当String与正则表达式匹配时,此方法返回“true”。
答案 11 :(得分:0)
当你问最左边的位是可选的时候,我已经做了最左边和最右边的位可选,检查出来
String Filepath = Txt_Attachfile.Text;
string accesToken = ConfigurationManager.AppSettings["AccessToken"];
var u = new Uri("https://abc.visualstudio.com/");
VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.VssBasicCredential(string.Empty, accesToken));
var connection = new VssConnection(u, c);
var workItemTracking = connection.GetClient<WorkItemTrackingHttpClient>();
string patchcontent = "";
JsonPatchDocument patchDocument = new JsonPatchDocument();
if (Txt_Attachfile.Text != "")
{
string filename = Path.GetFileName(Txt_Attachfile.Text);
Attachemt attachment = new Attachemt();
attachment = UpdloadToStore(filename);
patchDocument.Add(new JsonPatchOperation()
{
Operation = Microsoft.VisualStudio.Services.WebApi.Patch.Operation.Add,
Path = "/relations/-",
Value = new
{
rel = "AttachedFile",
url = attachment.url,
attributes = new
{
comment = "VanDelay Industries - Spec"
}
}
});
var result = workItemTracking.UpdateWorkItemAsync(patchDocument, Convert.ToInt32(workitem));
patchcontent = JsonConvert.SerializeObject(result);
}
与
匹配^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]?$
实时链接可用here
答案 12 :(得分:0)
略微修改上述Manish M Demblani's贡献 处理凌晨4点 (我摆脱了秒部分,因为我在申请中不需要它)
^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$
处理: 凌晨4点 凌晨4点 4:00 早上4:00 4:00 PM 凌晨4点30分 等。
答案 13 :(得分:0)
您的代码将无法正常使用,因为它不适用于01:00类型的格式。您可以对其进行如下修改。
pattern =r"^(0?[1-9]|1[0-2]):[0-5][0-9]$"
为了简化工作,我们可以使用变量来定义小时数限制。此外,我们可以添加子午线以获得更准确的结果。
hours_limit = 12
pattern = r"^[1-hours_limit]:[0-5][0-9]\s?[AaPp][Mm]$"
print(re.search(pattern, "2:59 pm"))
答案 14 :(得分:-1)
检查我构建的masterfull timestamp detector正则表达式,以查找用户指定的时间戳,其中包含的内容示例包括,但绝对不限于此;
8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am
只要时间包括数字
,它也会拾取更多答案 15 :(得分:-1)
我的是:
^(1?[0-9]|2[0-3]):[0-5][0-9]$
这要短得多
用几个例子测试了它
匹配度:
并且不匹配任何无效的实例,例如25:76等......
答案 16 :(得分:-1)
您可以尝试以下
^\d{1,2}([:.]?\d{1,2})?([ ]?[a|p]m)?$
它可以检测以下模式:
2300
23:00
4 am
4am
4pm
4 pm
04:30pm
04:30 pm
4:30pm
4:30 pm
04.30pm
04.30 pm
4.30pm
4.30 pm
23:59
0000
00:00
答案 17 :(得分:-3)
尝试以下
^([0-2][0-3]:[0-5][0-9])|(0?[0-9]:[0-5][0-9])$
注意:我假设是javascript正则表达式引擎。如果不同,请告诉我。
答案 18 :(得分:-3)
您可以使用以下正则表达式:
^[0-2]?[0-3]:[0-5][0-9]$
我所做的只有最左边的数字是可选的。其余的正则表达式是相同的。