Regex 时间段正则表达式
我正在使用jdev 12.2.1.0.0,并尝试使用“”验证输入字段(字符串) 在其中,我尝试以如下所示的格式输入时间段Regex 时间段正则表达式,regex,oracle-adf,Regex,Oracle Adf,我正在使用jdev 12.2.1.0.0,并尝试使用“”验证输入字段(字符串) 在其中,我尝试以如下所示的格式输入时间段 1h 40米20秒 1h 40米 2h 30s 30米20秒 30米 30(将被视为30米) 10秒 p>所以我需要一个正则表达式,允许用户以任何给定的格式进入时间段,也不需要考虑单元之间的空间(即:1H30M也是有效的)。 ^(?:\d+h)?(?:(?!\n)\s)?(?:\d+m?(?:(!\n)\s)?(?:\d+s)?$ 演示以下是一个与您想要的所有案例相匹配
- 1h 40米20秒
- 1h 40米
- 2h 30s
- 30米20秒
- 30米
- 30(将被视为30米)
- 10秒
^(?:\d+h)?(?:(?!\n)\s)?(?:\d+m?(?:(!\n)\s)?(?:\d+s)?$
演示以下是一个与您想要的所有案例相匹配的建议:
((\d{1,2}h\s?)?(\d{1,2}m\s?)?(\d{1,2}s\s?)?)|\d{1,2}
匹配所有案例。如果有超过1个周期,则分/秒必须介于0和59之间:
^(?:\d+[hms]?|\d+h(?:[ ]*[0-5]?\dm)?(?:[ ]*[0-5]?\ds)?|\d+m[ ]*[0-5]?\ds)$
试验
其他答案都不符合我的目的。
但多亏了这一点,我对正则表达式的研究才多一点。
所以请记住[0-9]表示一个数字,+表示将其扩展为多个数字。[d | h | m | s |]表示d、h、m或s中的任何字母。你可以随意增加几天或几小时?是将程序设置为可选的
您能告诉我们您到目前为止都做了哪些尝试吗?对不起,这不是编码服务。
[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]?[^$])?