objective-c - 用于匹配只需要以有效序列开始的模式的正则表达式
问题描述
我在这里有这个正则表达式模式/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
。它用于验证带有可选前导零的 HH:MM 24 小时字符串。
但是,例如,当我将它与 string 匹配时23:59
,它可以工作。这是好事。但我也想匹配这些字符串:2
, 23
, 23:
,23:5
和23:59
. 经过数小时的调试,我仍然找不到这样的东西,如果它存在的话。
(如果有用,我使用的是 Objective-C 正则表达式引擎,或者我也可以选择使用 Swift 引擎。)
解决方案
您可以以数字 00-23 开始匹配,或者将所有分钟部分设为可选。
^(?:[01]?[0-9]|2[0-3])(?::(?:[0-5][0-9]?)?)?$
解释
^
字符串的开始(?:
非捕获组[01]?[0-9]
匹配 00 - 19 或 0-9|
或者2[0-3]
比赛 20-23
)
关闭组(?:
非捕获组:
匹配一个:
字符(?:[0-5][0-9]?)?
可选匹配 5 和可选数字 0-9
)?
关闭组并使其可选$
字符串结束
推荐阅读
- c - C中的信号量死锁
- c++ - 多线程未按预期运行
- docker - 加快 'apt-get update' 以加快 Docker 映像构建
- c# - 控制器的非异步方法是否会阻止其他用户在使用或锁定时进入?
- f# - 如何在 F# 中使用 C# 可为空的日期时间
- c++ - CMake 找不到 boost_test
- python - 如何将函数中的值设置为 CSV?
- php - Wordpress 添加重写规则重定向而不是“隐藏”
- youtube - Youtube 评论 API 抛出“权限不足:请求的身份验证范围不足”错误
- ios - 当我的应用程序在后台运行时,是否可以获取用户正在使用的当前应用程序?