我想知道是否还可以添加更多的检查:Previously answered question。
使用Brian的这个正则表达式,上面的问题得到了很好的解决:
/^([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]))?)*$/
以供参考,再次发布旧问题
H 113
如果一个数字以连字符(-)开头,它不能以除逗号以外的任何其他字符结束,并遵循上面列出的所有规则。
例如2-2,1
或2,2-1
是有效的,而1-1-1-1
是无效的。
例如:
,这还能进一步增加其他验证吗?
1)数字应按升序排列。
例如:
2)数字不应重复
例如:
( a) 2,2,2 -无效
( b) 2,3-6,3 -无效
( c) 2,5,7-20 -有效
3) (如果可能的话)
如果先前在范围内定义了数字,则不应重复。
例如:
( a) 2,3-6,4-无效,因为4已经是介于3和6之间的一个数字
( b) 12- 16,14-18 -无效,因为14-15和16已在12-16中定义
( c) 9-13、15、17-19 -有效
发布于 2012-01-06 08:02:21
正则表达式应该检查模式,而不是处理业务逻辑。当你开始用"if .然后.否则“来说明你的问题时,这不是正则表达式应该处理的东西。
发布于 2015-09-02 09:21:02
正则表达式非常强大,可以用于解决您所面临的挑战--甚至实现某种业务逻辑验证。
从架构和软件工程的角度来看,我建议您重新构造问题并使用程序代码来解决这个问题。让我解释一下为什么:代码会
understand
。
总之,即使regex非常强大(我在我的应用程序中也大量使用它们),我也不会过度使用它们。他们非常优雅地解决一些问题,但变得非常丑陋,解决简单的事情。
https://stackoverflow.com/questions/8603556
复制相似问题