用于匹配这些pdf文件名的正则表达式

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (59)

我正在寻找一个匹配fileNamePattern的正则表达式。文件是pdf可以具有以下名称:8个字母数字字符,-4个字母数字字符-,4个字母数字字符-,4个字母数字字符-,12个字母数字字符+ .pdf

例子:

5b7f991f-0726-4dd5-856e-7cea820f02c5.pdf
138bcee6-db7f-47a7-97bf-69c0b3989698.pdf
e988315b-ade7-48e5-9733-35bb59a3c28d.pdf

我在用

^[A-Z][0-9]{8}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{12}[.]pdf

但是,由于没有匹配,我不确定它是否正确。

提问于
用户回答回答于

你只匹配你的正则表达式中的大写字母,当你使用时,[A-Z][0-9]{4}你不匹配四个字母数字字符,你匹配一个字母后跟4个数字。

因此,您需要合并 [A-Z][0-9]为单个字符类[A-Z0-9],然后使用不区分大小写的标志。

此外,您需要$在正则表达式的末尾使用以使模式匹配整个字符串。

使用

^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$

请参阅正则表达式演示

在C#中,

var rx = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.IgnoreCase);

请注意,可以使用内联修饰符设置不区分大小写(?i)

var pattern = @"(?i)^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$";
// check if the string matches the pattern
if (Regex.IsMatch(s, pattern) 
{
    // The string matches...
}
用户回答回答于

这应该工作/(\w{8})-(\w{4})-(\w{4})-(\w{4})-(\w{12})(.pdf)/i

我在RegEx Testing这里试过了

\ w = alphanmumeric {n} =符号应出现的次数

gi =是标志:“i”=不区分大小写。

扫码关注云+社区

领取腾讯云代金券