我制作了一个允许用户输入自定义“时间”字符串的 android 程序,例如:
- “3h”(意思是 3 小时)
- “2m30s”(意思是 2 分 30 秒)
- “2h962s”(意思是 2 小时 962 秒(原文如此))
- “1h5s6c”(意思是1小时5秒6百分之一秒)
- “5h78m228c”(意思是 5 小时 78 分钟 (原文如此) 和 228 百分之一秒 (原文如此))
我一直在使用这个正则表达式来验证自定义时间字符串: ^([0-9]?[0-9]h)?([0-9]+m)?([0-9]+s)?([0-9]+c)?$ (因此允许最多 99 小时,以及无限数量的分钟、秒和百分之一秒)
问题是我想使可选成为最后单元,以便使程序安静地使用>以下单位。在上面的示例中,将允许用户输入这些字符串而不是上面的字符串:
- “3”(不指定“h”,以便程序将“3”视为“3 小时”)
- “2m30”(不指定“s”,以便程序将“30”视为“30 秒”)
- “2h962s”(相同,因为如果不指定“s”,程序会将“962”视为“962 分钟”)
- “1h5s6”(不指定“c”,以便程序将“6”视为“百分之六秒”)
- “5h78m228c”(相同,因为如果不指定“c”,程序会将“228”视为“228 秒”)
然后我必须使用哪个正则表达式?
谢谢
最佳答案
检查这个:
^([0-9]?[0-9](h|$))?([0-9]+(m|$))?([0-9]+(s|$))?([0-9]+(c|$))?$
每次检查时间单位时,或者允许字符串结束。
关于java - 自定义时间字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729235/