我必须具有x:y格式的字符串,其中x和y必须为五位数字(填充零)并且x
例:

00515:02152


什么正则表达式将与此格式匹配?

如果可能,请简要说明解决方案以帮助我学习。

编辑:为什么我需要正则表达式?我编写了一个通用工具,该工具接受输入并根据配置文件对其进行验证。弹出一个意外的要求,它将要求我验证所显示格式的字符串(使用配置文件)。我希望使用我编写的现有配置框架解决此问题,因为拆分和解析将超出此工具的范围。对于诸如此类的突出要求,我不介意使用一些非正则/混乱的正则表达式,只要它的长度不超过10000行。感谢使用Regex的任何智能解决方案!谢谢。

最佳答案

描述

该表达式将验证第一个5位数字小于第二个5位数字,其中在:分隔的字符串中用零填充的5位数字,其格式为01234:23456

^
(?:
(?=0....:[1-9]|1....:[2-9]|2....:[3-9]|3....:[4-9]|4....:[5-9]|5....:[6-9]|6....:[7-9]|7....:[8-9]|8....:[9])
|(?=(.)(?:0...:\1[1-9]|1...:\1[2-9]|2...:\1[3-9]|3...:\1[4-9]|4...:\1[5-9]|5...:\1[6-9]|6...:\1[7-9]|7...:\1[8-9]|8...:\1[9]))
|(?=(..)(?:0..:\2[1-9]|1..:\2[2-9]|2..:\2[3-9]|3..:\2[4-9]|4..:\2[5-9]|5..:\2[6-9]|6..:\2[7-9]|7..:\2[8-9]|8..:\2[9]))
|(?=(...)(?:0.:\3[1-9]|1.:\3[2-9]|2.:\3[3-9]|3.:\3[4-9]|4.:\3[5-9]|5.:\3[6-9]|6.:\3[7-9]|7.:\3[8-9]|8.:\3[9]))
|(?=(....)(?:0:\4[1-9]|1:\4[2-9]|2:\4[3-9]|3:\4[4-9]|4:\4[5-9]|5:\4[6-9]|6:\4[7-9]|7:\4[8-9]|8:\4[9]))
)
\d{5}:\d{5}$


现场演示:http://www.rubular.com/r/w1QLZhNoEa

请注意,这是使用x选项忽略所有空白并允许注释,如果不使用x使用此表达式,则表达式必须全部放在一行上

关于c# - 正则表达式以确保在诸如“05123:12315”的字符串中,第一个数字小于第二个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17747718/

10-16 15:47