如何使用正则表达式为 JS 验证像 '$Now + 2h' 这样的字符串?
How to validate a string like '$Now + 2h' using regex, for JS?
我有一个用户输入需要验证:
字符串由第 1 部分 + 第 2 部分组成。
第 1 部分 可以是“$Now”或“$Today”或“$CurrentMonth”。
第 1 部分是强制性的。
第 2 部分 可以是 '+' 或 '-' 后跟 number 和 unit.
Number可以是任意数字,Unit应该是'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 组中捕获单位以简化 post 处理。
我有一个用户输入需要验证:
字符串由第 1 部分 + 第 2 部分组成。 第 1 部分 可以是“$Now”或“$Today”或“$CurrentMonth”。 第 1 部分是强制性的。
第 2 部分 可以是 '+' 或 '-' 后跟 number 和 unit. Number可以是任意数字,Unit应该是'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 组中捕获单位以简化 post 处理。