为了账号安全,请及时绑定邮箱和手机立即绑定

时间输入的正则表达式

时间输入的正则表达式

繁星点点滴滴 2023-04-14 17:09:22
我可以从输入中收到以下类型的值:1w 1d 1h 1m或者1n 1d 1h 1m其中周 (w) 和天 (d) 选项是可选的,其余的是强制性的。我想出了以下正则表达式:/^(([0-9][w,n])\s([0-9][d,d]))\s?([0-24][h,h])\s([0 -60][m,m])$/但它不起作用。我想我搞砸了可选部分,我也不太确定捕获组,所以这里的任何帮助将不胜感激。
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这有效:(?:\d[wн]\s)?(?:\d[dд]\s)?(:?\d{1,2}[hч])\s(:?\d{1,2}[mм])


查看完整回答
反对 回复 2023-04-14
?
千万里不及你

TA贡献1784条经验 获得超9个赞

您错误地使用了正则表达式类运算符[..]。我看到你打算设置允许的范围,但这不是它的工作原理。您只能在此处设置允许的字符集。所以[0-9]简单地说,所有字符 0、1、2、3、4、5、6、7、8、9 都是允许的。其中有多少在后面指定,例如[0-9]+表示一个或多个。在你的情况下,我会说“一两个”是你想要的几分钟和几小时[0-9]{1,2}

以下正则表达式按预期工作:

^(([0-9]+)[wн]\s([0-9]+)[dд]\s)?(([0-9]{1,2})[hч]\s)(([0-9]{1,2})[mм])$

请注意,之后您必须以编程方式进行值验证(因此小时和分钟在正确的范围内)。


查看完整回答
反对 回复 2023-04-14
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

尝试:

/^(?:\d+[wн]\s+\d+[dд]\s+)?\d+[чh]\s+\d+[мm]$/


查看完整回答
反对 回复 2023-04-14
  • 3 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信