Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 时间段正则表达式_Regex_Oracle Adf - Fatal编程技术网

Regex 时间段正则表达式

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)?$ 演示以下是一个与您想要的所有案例相匹配

我正在使用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)?$



演示

以下是一个与您想要的所有案例相匹配的建议:

((\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]?[^$])?