时间段的正则表达式
Regular expression for time period
我正在使用 jdev 12.2.1.0.0,我正在尝试使用“”验证输入字段(字符串)
其中我尝试以下面显示的格式输入时间段
- 1 小时 40 米 20 秒
- 1 小时 40 米
- 2 小时 30 秒
- 30 米 20 秒
- 30 米
- 30(算作30m)
- 10s
所以我需要一个正则表达式,它允许用户以任何给定的格式输入时间段,也不需要考虑单位之间的 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中的任意字母。您可以随意添加天数或小时数。 ?是将前面的作为可选的。
我正在使用 jdev 12.2.1.0.0,我正在尝试使用“”验证输入字段(字符串) 其中我尝试以下面显示的格式输入时间段
- 1 小时 40 米 20 秒
- 1 小时 40 米
- 2 小时 30 秒
- 30 米 20 秒
- 30 米
- 30(算作30m)
- 10s
所以我需要一个正则表达式,它允许用户以任何给定的格式输入时间段,也不需要考虑单位之间的 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中的任意字母。您可以随意添加天数或小时数。 ?是将前面的作为可选的。