我需要一些关于REGEX的帮助(Symfony)。
我希望匹配值1到60或字符串全部。
我想使用此号码:^([1-5]?[0-9]|60)
但匹配 0 ...我现在不知道如何匹配“全部”。
答案 0 :(得分:12)
您应该能够将其分为以下几种可能性:
^([1-9]|[1-5][0-9]|60|all)$
这为您提供了四种可能性:
[1-9]
个位数值。[1-5][0-9]
:从十点到五十九点的所有内容。60
:六十。all
:您的“全部”选项。但请记住,正则表达式并不总是每个问题的答案。
有时它们对复杂的价值检查不太有用(但在这种情况下,它是一个相当简单的检查)。类似下面的内容(伪代码):
def isAllOrOneThruSixty(str):
if str == "all":
return OK
if str.matches ("[0-9]+"):
val = str.convertToInt()
if val >= 1 and val <= 60:
return OK
return BAD
有时候,虽然更详细,但也更具可读性和可维护性。
答案 1 :(得分:4)
这将满足您的所有需求
^([1-9]|[1-5]\d|60|all)$
答案 2 :(得分:0)
您正在[1-5]
选择;把它转过来,就像这样:[1-5][0-9]?
。您还需要覆盖一位数的[6-9]
。
答案 3 :(得分:0)
问题是你缺少一些括号,你应该切换60和其余的,否则它只会匹配60中的6:
^((60|([1-5]?[0-9]))|all)