JavaScript RegExp 匹配(部分)小时

标签 javascript regex

我希望允许人们以各种格式在文本框中输入时间。其中一种格式可以是:

2h 2 小时,或
2.5h 2个半小时

我想使用正则表达式来识别该模式,但由于某种原因它没有识别它:

我有:

var hourRegex = /^\d{1,2}[\.\d+]?[h|H]$/;

适用于 2h,但不适用于 2.5h

我认为这个正则表达式意味着 - 从字符串的开头开始,有一个或两个数字,然后没有或一个小数点,如果存在,则必须后跟一个或多个数字,然后有一个 h H 然后它一定是字符串的结尾。

我尝试过正则表达式工具here但运气不佳。

最佳答案

/^\d{1,2}(?:\.\d+)?h$/i; 使用圆括号代替方括号。

  • 从头开始
  • 一位或两位数字
  • 可选:一个点,后跟至少一位数字
  • h结尾
  • 不区分大小写

正则表达式教程

  • [...] - 方括号表示:提供范围内的任何内容。
  • [^...] 表示:匹配不在给定范围内的字符
  • (...) - 括号的意思是:将我分组。或者,组的第一个字符可以以以下形式开头:
    1. ?: - 不要引用我(我,I = 组)
    2. ?= - 不要让我参加比赛,尽管我必须在这里
    3. ?! - 我此时可能不会出现

  • {a,b}{a,} 表示:至少 a,最多 >b 个字符。省略 b = 无穷大
  • +表示:至少一次,尽可能匹配等价于{1,}
  • * 表示:尽可能匹配等价于{0,}
  • +?*? 与前面描述的效果相同,但有一点不同:尽可能少匹配

示例

[a-z]     One character, any character between a, b, c, ..., z
(a-z)     Match "a-z", and group it
[^0-9]    Match any non-number character

另请参阅

关于JavaScript RegExp 匹配(部分)小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705440/

相关文章:

javascript - 如何使用<ul>显示滚动内容?

javascript - Instagram 任务机器人正在快速触发事件

java - 模式匹配器与字符串拆分器,我应该使用哪个?

java - 函数调用的正则表达式模式

php - 具有特殊字符的精确正则表达式 preg_replace

javascript - Angular : How to get the total for a shopping website

javascript - 导航不会在滚动时改变大小

javascript - 如何获取最新的 Chrome(版本 55)以允许混合内容?

.net - 正则表达式问题

java - java中去除头部和尾部的空字符串