我需要一些关于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)
有时候,虽然更详细,但也更具可读性和可维护性.