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

web*_*dev 7 regex match

我想知道是否可以添加更多检查:[以前回答的问题]( 尝试构建正则表达式来检查模式).

使用Brian Rogers的正则表达式可以很好地解决上述问题:

/^([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]))?)*$/  
Run Code Online (Sandbox Code Playgroud)

[仅供参考,再次发布较旧的问题]

  1. 以数字开头和结尾
  2. 连字符应以数字开头和结尾
  3. 逗号应以数字开头和结尾
  4. 数字范围应为1-31
  5. 如果数字以连字符( - )开头,则它不能以逗号以外的任何其他字符结尾并遵循上面列出的所有规则.

例如, 2-2,1OR 2,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)如果可能,
如果先前在范围
Eg中定义,则不应重复编号:
a)2,3-6,4 - 无效,因为4已经是3到6之间的数字
b)12-16,14-18 - 无效,因为14,15和16已经在12-16
c)9-13,15,17-19中定义- 有效

Bip*_*pul 1

正则表达式应该检查模式而不是处理业务逻辑。当您开始用“if ... then ... else”陈述问题时,这不是正则表达式应该处理的问题。