如何匹配至少有一个必须出现的2个数字(不同范围)的序列?

时间:2016-06-17 13:34:44

标签: javascript regex angular

我有以下正则表达式(在Angular 2< - Typescript中使用):

 /[0-5]?[0-9]?/

出于某种原因,这可以完美匹配任何有效的分钟:1,2,...,59 (即即使没有写入数字,它的 有效..但这两个数字都是可选的!)

那么,为什么这项工作呢?如何匹配[0-5]或[0-9]或[0-5] [0-9]但不是空字符串?

  

有效输入为:0,1,2,3,....,59

我尝试使用{1,2},但这显然与 3个字符

相匹配

2 个答案:

答案 0 :(得分:2)

我用

[0-5]?[0-9]

匹配0059的任意两位数字。

请参阅the regex demo

在这里,

  • [0-5]? - 从05
  • 匹配1位或0位的字符类
  • [0-9] - 从09匹配1位数的字符类。

注意:由于第一个[0-5]?包含0,因此数字中可以显示前导0。如果您不想要前导零,请将第一个字符类替换为[1-5]?

要仅将它们作为独立数字匹配,请使用字边界:\b[0-5]?[0-9]\b

要仅匹配由这些数字组成的整个字符串,请使用^ / $个锚点:^[0-5]?[0-9]$

答案 1 :(得分:1)

要匹配0到59范围内的数字,只有第一个字符应该是可选的。您还应该使用字边界断言来防止匹配3位数字:

\b[1-5]?[0-9]\b

Regex101 Demo