正则表达式匹配时间,如'1h 10m'

时间:2015-08-26 10:10:36

标签: javascript regex

我正在尝试构建一个时间跟踪应用程序,该应用程序需要解析一个字符串,该字符串可以以多种格式或组合之一(但并非总是)有一段时间。我正在检查的格式是

  • H |小时|小时|小时
  • 米| MIN |分钟|分钟

这些可以是数字和小时或分钟之间的空格,可以组合或只是一个或另一个。一些例子:

  • 1H
  • 1小时20分钟
  • 2小时15米

用于匹配我当前时间的正则表达式:

((\d+(\.\d+)?)\s*(h|hr|hrs|hours))?(\s*(\d+)\s*(m|min|mins|minutes))?

如果我只是将时间字符串传递给它之前没有任何内容,这可以正常工作。我的问题是我想解析一个完整的文本字符串,其中出现的时间就在其中。一些例子:

  • 这是1小时15分钟
  • 的时间作品
  • 2小时45分钟这是一些工作的时间条目
  • 这是一段工作时间1小时25分钟
  • 这是一些工作的时间条目

有没有人对如何解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:0)

您真正需要做的就是复数s可选,并添加一些单词边界标记。

尝试:

\b((\d+(\.\d+)?)\s*(h|hr|hrs?|hours?))?(\s*(\d+)\s*(m|min|mins?|minutes?))?\b