我有一个用户输入要验证:
字符串由第1部分+第2部分组成。Part 1可以是'$ Now'或'$ Today'或'$ CurrentMonth'。第1部分是强制性的。
Part 2可以是'+'或'-',后跟number和unit。Number可以是任何数字,Unit应该是'm','h','d'之一。第二部分是可选的
一些有效的示例:
'$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中的单位,以简化后处理。