try^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:0?2(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(?:0?[13578]|1[02])(?:31))|(?:(?:0?[13-9]|1[0-2])(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8])))).*\.txt$

解决方案 »

  1.   

    ((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})(0?[13456789]|1[012])(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)).*\.txt
      

  2.   

    ^\d{8}.+\.txt$
    苛严点就是:
    ^[12]\d\d\d[01]\d[0-3]\d.+\.txt$
      

  3.   

    优化一下:^[12]\d{3}[01]\d[0-3]\d.+\.txt$^和$是首尾匹配符,如果仅处理文件名的话最好都带上,如果是文件完整路径的话这样写:(?<=[/|\\])[12]\d{3}[01]\d[0-3]\d[^/\\]+\.txt$注意在C#代码中要用@""囊括起来,即:@"(?<=[/|\\])[12]\d{3}[01]\d[0-3]\d[^/\\]+\.txt$"