gpt4 book ai didi

regex - 尝试构建一个正则表达式来检查模式

转载 作者:行者123 更新时间:2023-12-01 08:26:03 29 4
gpt4 key购买 nike

a) 以数字开始和结束
b) 连字符应该以数字开始和结束
c) 逗号应该以数字开始和结束
d) 数字范围应为 1-31

[编辑:正则表达式中需要这条规则,感谢 Ed-Heal!]
e) 如果数字以连字符 (-) 开头,则不能以逗号以外的任何其他字符结尾,并遵循上面列出的所有规则。
例如。 2-2,1 OR 2,2-1 有效而 1-1-1-1 无效

例如
a) 1-5,5,15-29
b) 1,28,1-31,15
c) 15,25,3 [编辑:将 56 替换为 3,感谢 Brian 指出!]
d) 1-24,5-6,2-9

试过了,但即使字符串以逗号开头,它也会通过:

/^[0-9]*(?:-[0-9]+)*(?:,[0-9]+)*$/

最佳答案

这个怎么样?这将至少检查规则 a、b 和 c,但不检查规则 d。

/^[0-9]+(-[0-9]+)?(,[0-9]+(-[0-9]+)?)*$/

如果您需要确保所有数字都在 1-31 范围内,那么表达式将变得更加丑陋:

/^([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01 ]))?(,([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]) )?)*$/

请注意,您的示例 c 包含一个不在 1-31 范围内的数字 56,因此它不会通过第二个表达式。

关于regex - 尝试构建一个正则表达式来检查模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599725/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com