1

我正在尝试对基于时间的文本框进行验证。因为我需要这样的格式。 00:00:00:00( Days:Hours:Minutes:Seconds)。有效时间是99:23:59:59, 01:01:01:01, 25:00:20:55,

无效时间是99:24:60:60, 99:2:1:1

我对正则表达式了解不多。那么任何人都可以帮助我构建一个与我的场景匹配的正则表达式吗?

4

1 回答 1

2

试试这个模式,

^\d{2}:([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)$

简要说明:

  • 在行首断言位置(在字符串的开头或换行符之后)^
  • 匹配单个数字 0..9\d{2}
    • 正好2次{2}
  • 从字面上匹配字符“:”:
  • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 1([0-1]\d|2[0-3])
    • 匹配下面的正则表达式(仅在此选项失败时尝试下一个选项)[0-1]\d
      • 匹配“0”到“1”范围内的单个字符[0-1]
      • 匹配单个数字 0..9\d
    • 或者匹配下面第2个正则表达式(如果这个匹配失败,整个组都失败)2[0-3]
      • 从字面上匹配字符“2”2
      • 匹配“0”到“3”范围内的单个字符[0-3]
  • 从字面上匹配字符“:”:
  • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 2([0-5]\d)
    • 匹配“0”到“5”«[0-5]»范围内的单个字符
    • 匹配单个数字 0..9\d
  • 从字面上匹配字符“:”:
  • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 3 «([0-5]\d)»
    • 匹配“0”到“5”范围内的单个字符[0-5]
    • 匹配单个数字 0..9\d
  • 在行尾断言位置(在字符串末尾或换行符之前)$
于 2013-08-26T06:42:36.163 回答