我有以下正则表达式(在 Angular 2 <- Typescript 中使用):
/[0-5]?[0-9]?/
出于某种原因,这可以完美匹配任何有效分钟:1,2, ..., 59 (即即使没有写入数字,它也在中有效..但两个数字都是可选的!)
那么,为什么这仍然有效?如何匹配[0-5]或[0-9]或[0-5][0-9]但不匹配空字符串?
Valid inputs are: 0, 1, 2, 3, ...., 59
我尝试使用 {1,2} 但这显然匹配 3 个字符
最佳答案
我会用
[0-5]?[0-9]
匹配从 00
到 59
的任意两位数。
在这里,
[0-5]?
- 匹配从0
到5
的 1 个或 0 个数字的字符类
[0-9]
- 匹配从0
到9
的 1 个数字的字符类。
注意:由于第一个[0-5]?
包含一个0
,一个前导的0
可以存在于数字中。如果您不想要前导零,请将第一个字符类替换为 [1-5]?
。
要仅将它们作为独立数字进行匹配,请使用单词边界:\b[0-5]?[0-9]\b
。
要仅匹配包含这些数字的整个 字符串,请使用^
/$
anchor :^[0-5] ?[0-9]$
关于javascript - 如何匹配至少一个必须出现的 2 个数字(不同范围)的序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37882999/