在我的逻辑中,我需要一个字符串var保留在数据库中,该字符串实际上是一种通过以下方式自定义toString变量的时间格式:
(days)d(hours)h(minutes)m
示例2天15小时半=> 2d15h30m
我想确保没有人在输入文本时期望提交该格式并给出另一种格式,我一直都很讨厌构建模式,正则表达式有人可以帮助我快速解决这个问题吗?
我已经尝试过自己:
([0-9]{1}|[0-9]{1}|[0-9]{1})d([0-1]{1}[0-9]{1}|20|21|22|23)h([0-5]{1}|[0-9]{1})m
但是它没有奏效,就像我每次尝试构建其中之一一样。
答案 0 :(得分:0)
您可以使用
pattern="(?=[^1-9]*[1-9])\d+d(?:[10]?[0-9]|2[0-3])h[0-5]?\dm"
在HTML5 pattern
属性正则表达式中,此模式将用于编译以下正则表达式:^(?:(?=[^1-9]*[1-9])\d+d(?:[10]?[0-9]|2[0-3])h[0-5]?\dm)$
。
它匹配
^(?:
-字符串的开头和未捕获的容器组的开头(?=[^1-9]*[1-9])
-正向超前查询,要求输入中至少包含一个非零数字\d+d
-1个以上的数字和后跟d
个字符(?:[10]?[0-9]|2[0-3])h
-可选的1
或0
,后跟一个数字,或者2
,后跟一个从0
到3
的数字,都跟着h
[0-5]?\dm
-从0
到5
的可选数字,后跟任意数字和m
)$
-容器组的结尾和字符串锚点的结尾。