用于匹配只需要以有效序列开头的模式的Regex



我这里有这个正则表达式模式/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/。用于验证带有可选前导零的HH:MM 24小时字符串。

但是,当我将它与字符串23:59匹配时,例如,它可以工作。这是一件好事。但我也想匹配这些字符串:2,23,23:,23:523:59。经过几个小时的调试,我仍然找不到这样的东西,如果它存在的话。

(如果它是有用的,我使用Objective-C正则表达式引擎,或者我也可以选择使用Swift的)

您可以从数字00-23或开始匹配,并使所有的分钟部分都是可选的。

^(?:[01]?[0-9]|2[0-3])(?::(?:[0-5][0-9]?)?)?$

  • ^字符串
  • 起始
  • (?:非捕获组
    • [01]?[0-9]匹配0- 19或0-9
    • |
    • 2[0-3]match 20-23
  • )关闭组
  • (?:非捕获组
    • :匹配:字符
    • (?:[0-5][0-9]?)?可选匹配5和可选数字0-9
  • )?关闭组并使其为可选
  • $字符串结束

Regex演示

看起来可以工作:

^(?:[01]?[0-9]|2[0-3])(?::(?:[0-5]?[0-9])?)?$

查看在线演示

  • ^-启动字符串锚。
  • (?:-打开第一个非捕获组:
    • [01]?-可选0或1;
    • [0-9]-任意数字;
    • |- Or:
    • 2[0-3]- 2后面跟着从0到3的数字;
    • )-关闭第一个非捕获组。
  • (?:-打开第二个非捕获组:
    • :- A冒号;
    • (?:-打开第3个非捕获组:
      • [0-5]?[0-9]-可选数字0到5和数字0到9;
      • )?-关闭第3个非捕获组并使其为可选。
    • )?-关闭第二个非捕获组并使其成为可选的。
  • $-结束字符串锚。

相关内容

  • 没有找到相关文章

最新更新