文件名失败的正则表达式验证

时间:2015-01-14 20:30:59

标签: regex

我正在尝试验证一个文件名,其中包含字母“CAT”或“DOG”,后跟8个数字,并以“.TXT”结尾。

示例:

CAT20000101.TXT
DOG20031212.TXT

这不匹配:

ATA12330000.TXT
CAT200T0101.TXT
DOG20031212.TX1

这是我正在努力工作的正则表达式:

(([A-Z]{3})([0-9]{8})([\.TXT]))\w+

为什么最后一节(.TXT)针对不匹配的文件扩展名失败?

参见示例:http://regexr.com/3a7fo

4 个答案:

答案 0 :(得分:2)

内部字符类没有正则表达式分组,因此[\.TXT]不正确。

您可以使用此正则表达式:

^[A-Z]{3}[0-9]{8}\.TXT$

仅限匹配CATDOG使用:

^(CAT|DOG)[0-9]{8}\.TXT$

答案 1 :(得分:1)

  1. 丢失不必要的括号
  2. [A-Z]{3}[0-9]{8}[\.TXT]\w+

    1. []
    2. 周围丢失了不必要/模式破坏的字符类\.TXT

      [A-Z]{3}[0-9]{8}\.TXT\w+

      1. 在最后丢失\w+
      2. [A-Z]{3}[0-9]{8}\.TXT

        1. [A-Z]{3}更改为(?:CAT|DOG)
        2. (?:CAT|DOG)[0-9]{8}\.TXT

          瞧。

答案 2 :(得分:1)

它失败了因为\.TXT在方括号中,它只匹配这四个字符中的一个。只需使用(\.TXT)

答案 3 :(得分:1)

删除[.TEXT]周围的方括号到.TEXT 您的示例已修改为http://regexr.com/3a7fu