首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图构建一个正则表达式来检查模式-2

试图构建一个正则表达式来检查模式-2
EN

Stack Overflow用户
提问于 2011-12-22 11:58:30
回答 2查看 335关注 0票数 7

我想知道是否还可以添加更多的检查:Previously answered question

使用Brian的这个正则表达式,上面的问题得到了很好的解决:

代码语言:javascript
运行
复制
/^([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]))?)*$/  

以供参考,再次发布旧问题

  1. 开始和结束以数字
  2. hyphen开始和结尾的数字
  3. 逗号应该以数字开始和结尾
  4. 的数字范围应该是1-31

H 113如果一个数字以连字符(-)开头,它不能以除逗号以外的任何其他字符结束,并遵循上面列出的所有规则。

例如2-2,12,2-1是有效的,而1-1-1-1是无效的。

例如:

  • 1-5,5,15-29
  • 1,28,1-31,15
  • 15,25,3 - 1-24,5-6,2-9

,这还能进一步增加其他验证吗?

1)数字应按升序排列。

例如:

  • 1,2-3 -有效
  • 4-6,23-有效
  • 23,4-5-无效

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 -有效

EN

回答 2

Stack Overflow用户

发布于 2012-01-06 08:02:21

正则表达式应该检查模式,而不是处理业务逻辑。当你开始用"if .然后.否则“来说明你的问题时,这不是正则表达式应该处理的东西。

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 09:21:02

正则表达式非常强大,可以用于解决您所面临的挑战--甚至实现某种业务逻辑验证。

从架构和软件工程的角度来看,我建议您重新构造问题并使用程序代码来解决这个问题。让我解释一下为什么:代码会

understand

  • error
  • 很难读,而且很容易测试
  • ,维护它的成本会猛增

总之,即使regex非常强大(我在我的应用程序中也大量使用它们),我也不会过度使用它们。他们非常优雅地解决一些问题,但变得非常丑陋,解决简单的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8603556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档