我有一个要验证的用户输入:
字符串由第1部分+第2部分组成。第1部分可以是"$Now"、"$Today"或"$CurrentMonth"。第1部分是强制性的
第2部分可以是"+"或"-",后面跟着数字和单位。数字可以是任何数字,单位应该是"m"、"h"、"d"中的一个。第2部分是可选的
一些有效的例子:
'$Now',
'$Today',
'$CurrentMonth',
'$Now + 2h',
'$Now - 4m',
'$Now + 6d',
'$Today - 7d'
尝试了几种模式,但无法通过,因为我对正则表达式知之甚少。
您可以使用以下正则表达式:
^$(Now|Today|CurrentMonth)s*(?:([+-])s*(d+)([dhm]))?s*$
它查找$Now
、$Today
或$CurrentMonth
中的一个,然后是可选的+/-
、数字和单位(d
、m
或h
(。它捕获组1中的Part 1
,然后捕获组2中的+/-
,组3中的数字和组4中的单位,以简化后期处理。
regex101 演示