当前位置: 首页 > 知识库问答 >
问题:

文件名的正则表达式--限制名称大小和文件扩展

卫甫
2023-03-14

我需要icefaces输入文件组件的正则表达式,文件名长度应该小于15个字符,并有适当的扩展。我写了这个,但失败了:

^.{0,100}.+.(AsfaVicsVPDFDocDocxDotemlGiffhtmhtmlidxtifjpgjpegbmppngmp3mpgmsgppptxpstrtftwavwmaxlsxxzip“+”

共有1个答案

夏侯旻
2023-03-14

文件名长度应小于15

这可以通过积极的lookahead(?=.{0,15}$)来实现。然而,如果以消极的眼光来看,这种情况可以更优雅地表达出来。我们可以使用(?!.{16})在开头锚定的负lookahead,这意味着如果有16个字符,匹配应该失败。

要缩短模式,还可以使用嵌入的标志表达式(?i)

(?i)^(?!.{16}).+[.](?:asf|avi|csv|pdf|doc|docx|dot|eml|gif|htm|html|idx|tif|jpg|jpeg|bmp|png|mp3|mpg|msg|ppt|pptx|pst|rtf|txt|wav|wma|xls|xlsx|zip)$
(?i)^(?!.{16}).+[.](?:asf|avi|csv|pdf|docx?|dot|eml|gif|html?|idx|tif|jpe?g|bmp|png|mp[3g]|msg|pptx?|pst|rtf|txt|wav|wma|xlsx?|zip)$
 类似资料:
  • 问题内容: 与以“ Run”开头且文件扩展名为“ .py”的字符串(在本例中为文件名)匹配的正则表达式是什么? 正则表达式应匹配以下任何一个: 它不应该匹配: 我正在寻找的SQL等效项是。 问题答案: 对于正则表达式,可以使用: 快速说明: 。表示匹配任何字符。 表示匹配上一个字符的任何重复(因此。表示任何字符序列) \是逃避显式点的转义 $表示“字符串结尾”,因此我们不匹配“ Run_foo.p

  • 问题内容: 刚刚开始探索正则表达式的“奇迹”。作为一个从试验和错误中学习的人,我真的很努力,因为我的试验抛出了不成比例的错误……我的实验是在PHP中使用ereg()进行的。 无论如何。我分别使用名字和姓氏,但现在使用相同的正则表达式。到目前为止,我有: 任何以大写字母开头且其余仅包含字母(大写或不大写)的长度字符串。但是我分崩离析的地方是在几乎任何地方都可能发生的特殊情况下。 连字符(Worthi

  • 问题内容: 我正在尝试从包含文件名或目录的字符串中提取子字符串。提取的子字符串应为文件扩展名。我已经在网上进行了一些搜索,发现可以使用正则表达式来完成此任务。我发现这是一种可以找到文件扩展名的模式。问题是我对正则表达式及其功能不完全熟悉。 基本上,如果我有一个像我想要的正则表达式这样的字符串,然后查找并创建一个仅包含 问题答案: 您可以使用String类split()函数。在这里您可以传递一个正则

  • 我希望在我的应用程序中接受带有字母和连字符或破折号的名称,我的代码基于我在这里找到的答案并编码为: 唯一的问题是它接受连字符作为我不想要的第一个字母(甚至是多个字母)。谢谢

  • 高效文件处理 下面是个简单的基准测试,读取一个由数字构成的文本文件,并打印它们的和。 -- file: ch08/SumFile.hs main = do contents <- getContents print (sumFile contents) where sumFile = sum . map read . words 尽管读写文件时,默认使用 String 类型,

  • 问题内容: 我想在包含单行的超大文件(fe大于1 GB)中搜索模式。无法将其加载到内存中。目前,我使用读入缓冲区(1024个字符)。主要步骤: 将数据读入两个缓冲区 该缓冲区中的搜索模式 如果找到模式,则增加变量 将第二个缓冲区复制到第一个 将数据加载到第二个缓冲区 在两个缓冲区中搜索模式。 如果找到模式,则增加变量 重复上述步骤(从4开始),直到EOF 该算法(两个缓冲区)让我避免了将搜索到的文