时间段的正则表达式

Regular expression for time period

我正在使用 jdev 12.2.1.0.0,我正在尝试使用“”验证输入字段(字符串) 其中我尝试以下面显示的格式输入时间段

所以我需要一个正则表达式,它允许用户以任何给定的格式输入时间段,也不需要考虑单位之间的 space(即:1h30m 也有效)。

试试这个正则表达式:
^(?:\d+h)?(?:(?!\n)\s)?(?:\d+m?)?(?:(?!\n)\s)?(?:\d+s)?$

演示 here

这是一个符合您想要的所有情况的建议:

((\d{1,2}h\s?)?(\d{1,2}m\s?)?(\d{1,2}s\s?)?)|\d{1,2}

Demo on regex101

匹配所有情况。
如果有超过 1 个句点,minutes/seconds 必须在 0 到 59 之间:

^(?:\d+[hms]?|\d+h(?:[ ]*[0-5]?\dm)?(?:[ ]*[0-5]?\ds)?|\d+m[ ]*[0-5]?\ds)$

测试here

[0-9]+[d|h|m|s|D|H|M|S]?[^$]?([0-9]+[h|m|s|H|M|S]?[^$]?)?([0-9]+[m|s|M|S]?[^$]?)?([0-9]+[s|S]?[^$])?

None 其他答案对我有用。 但由于这个原因,我对 Regex 的研究很少。 所以请记住 [0-9] 表示单个数字, + 是将其扩展为多个数字。 [d|h|m|s|]表示d、h、m或s中的任意字母。您可以随意添加天数或小时数。 ?是将前面的作为可选的。

https://regex101.com/r/dpyonK/17