簡體   English   中英

正則表達式驗證文件名失敗

[英]Regex validation of filename failing

我正在嘗試驗證帶有字母“ 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

在字符類內部,沒有正則表達式分組,因此[\\.TXT]不正確。

您可以使用此正則表達式:

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

對於僅匹配的CATDOG使用:

^(CAT|DOG)[0-9]{8}\.TXT$
  1. 丟掉不必要的括號

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

  1. 丟失\\.TXT周圍不必要的/破壞樣式的字符類[]

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

  1. 最后失去\\w+

[AZ]{3}[0-9]{8}\\.TXT

  1. [AZ]{3}更改為(?:CAT|DOG)

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

瞧。

失敗是因為\\.TXT在方括號中,該方括號僅匹配這四個字符之一。 只需使用(\\.TXT)

刪除[.TXT]到.TXT周圍的方括號您的示例已修改http://regexr.com/3a7fu

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM