正则表达式:匹配1到60或全部

prc*_*aen 4 php regex string

我需要一些关于REGEX的帮助(Symfony).

我想匹配值1到60或字符串全部.

对于数字我使用它:^([1-5]?[0-9]|60)但它匹配0 ...而我现在不能匹配"所有".

你能帮助我吗 ?非常感谢

pax*_*blo 13

您应该能够将其划分为以下可能性:

^([1-9]|[1-5][0-9]|60|all)$
Run Code Online (Sandbox Code Playgroud)

这为您提供了四种可能性:

  • [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
Run Code Online (Sandbox Code Playgroud)

有时候,虽然更详细,但也更具可读性和可维护性.