要求:
对类似1027-013A-25-6091-3 货号进行验证。
货号解释:
前四位表示(月日1121表示11月21日),
后四位数字字母(大写)组合,
后跟1至2位数字,
后跟四位任意数字,
后跟1至3位数字 
我写的正则
if(Regex.Match("1027-013A-25-6091-3",@"^[0-1][\d]{1}[0-3][\d]{1}-[A-Z0-9]{4}-[\d]{1,2}-[\d]{4}-[\d]{,3}$").Success)
总是验证不过去,不知道时候什么问题?
恕在下愚笨,我连如何对正则调试都不知道,请大家赐教!!谢谢了!

解决方案 »

  1.   

    Regex.Match("1027-013A-25-6091-3",@"^((0[1-9])|(1[0-2]))(([0-2][0-9])|(3[0-1]))-[A-Z0-9]{4}-(\d{1,2})-((\d){4})-(\d){1,3}$").Success
      

  2.   

    xrascal(横刀夺爱)对于日期格式的检查的确更加严谨,但如果严格讲还是不够,因为那个还是还是会把2月30日算做正常日期。
    所以我觉得倒是不如先像楼主那样简单判断一下,碰到日期,如果要严加判断,再通过另外写方法。
      

  3.   

    xrascal(横刀夺爱)  方法正确
      

  4.   

    你参考一下这个日期的正则表达式吧RegexValidDate = @"^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$";可用于验证0000/00/00和0000-00-00和0000.00.00这三种格式的日期
      

  5.   

    吓死我了,全是高人阿,崇拜ing,
    steedhorse(晨星) 说的对,不能写{,3}我后来修改成{1,3}可以正确, 但同时发现了后面几位说的问题,2月份的验证问题,太.........BT了,先凑合着用吧......哭啊
      

  6.   

    http://www.regexlib.com/DisplayPatterns.aspx?cattabindex=5&categoryId=5