java - 自定义时间字符串的正则表达式

标签 java android regex time

我制作了一个允许用户输入自定义“时间”字符串的 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/

相关文章:

android 异步任务 NetworkOnMainThreadException

正则表达式 - 匹配不以字符结尾的多行

regex - 使用 htaccess 从 url 中删除 .php

java - 如何向\p{S} 添加否定

java - PIG : Cannot cast java. lang.String to org.apache.avro.util.Utf8 with AvroStorage inside STORE

java - 如果失败/完成,如何将线程重新提交给 ExecutorService

android - 使用 AppCompat-V21 工具栏小部件在右侧设置抽屉导航图标

java - 堆栈溢出错误

java - 正则表达式匹配任意位置包含 ()- 的电话号码

java - 为什么crawler4j随机挂起?