【问题标题】:Regular Expression to validate Time Period用于验证时间段的正则表达式
【发布时间】:2017-07-19 06:33:03
【问题描述】:

希望使用正则表达式验证时间段。

时间段可以以人类可读的格式给出。示例如下

  • 1 小时 10 分钟
  • 2 天 10 小时
  • 3 周 4 天
  • 5 天 4 小时 3 分钟

到目前为止我想到的是\d\s(days?|weeks?|months?|hours?|minutes?|seconds?)

期间应仅包含数字或句点(天、周...),数字和句点应以空格分隔,句点应按周、天、小时和分钟的降序排列。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 嗨,欢迎来到 SO。在添加问题之前请阅读How to Askminimal reproducible example
  • 您的问题是什么?您可以添加到目前为止您尝试过的内联代码示例并显示您失败的地方,肯定会有一些人可以帮助您解决这个问题。
  • 如果您在课程作业中遇到困难,请咨询您的导师。如果您要求某人为您执行此操作,那么这不是 SO 的用途。从长远来看,用勺子喂你一个答案不会有帮助。
  • 您是否希望使用正则表达式根据这些规则验证某个输入?

标签: javascript jquery regex


【解决方案1】:

编辑

我认为这个正则表达式是你想要的:/^([1-9][0-9]*\sdays?\s?)?([1-9][0-9]*\sweeks?\s?)?([1-9][0-9]*\smonths?\s?)?([1-9][0-9]*\shours?\s?)?([1-9][0-9]*\sminutes?\s?)?([1-9][0-9]*\sseconds?\s?)?$/

几个测试:

  • 1 小时 10 分钟 → 真
  • 2 天 10 小时 1 个月 → 错误
  • 3 周 4 天 84 天 → 错误
  • 5 天 4 小时 3 分钟 → 是的
  • 0 分钟 → 错误

【讨论】:

  • jsfiddle.net/r299o2bb/1 这对于任何随机值都返回 true,请您看一下小提琴。
  • 对不起,我忘记了行首和行尾。^(\d+\sdays?\s?)?(\d+\sweeks?\s?)?(\d+\smonths?\s?)?(\d+\shours?\s?)?(\d+\sminutes?\s?)?(\d+\sseconds?\s?)?$
  • 谢谢!!完美运行。只有“0分钟”期间失败。更新了小提琴jsfiddle.net/r299o2bb/19
  • 测试我忘了,那里:/^([1-9][0-9]*\sdays?\s?)?([1-9][0-9]*\sweeks?\s?)?([1-9][0-9]*\smonths?\s?)?([1-9][0-9]*\shours?\s?)?([1-9][0-9]*\sminutes?\s?)?([1-9][0-9]*\sseconds?\s?)?$/
猜你喜欢
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多