限制名称大小和文件扩展

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

^ {0,100} +(ASF |。AVI | CSV | PDF | DOC | DOCX |点| EML | GIF | HTM |全文| IDX | TIF | JPG | JPEG | BMP | PNG | MP3 |英里|留言| PPT | pptx | pst | rtf | txt | wav | wma | xls | xlsx | zip“+”| ASF | ASI | CSV | PDF | DOC | DOCX | DOT | EML | GIF | HTM | HTML | IDX | TIF | JPEG | BMP | PNG | MP3 | MPG |留言| PPT | PPTX | PST | RTP | TXT | WAV | WMA | XLS | XLSX | ZIP)


文件名长度应小于15

这可以通过积极的预测(?=.{0,15}$) 。 但是,对于负面的预测,这种情况可以更加优雅地表达。 我们可以在开始处使用(?!.{16})负向预测,这意味着如果有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)$

查看正则表达式演示。

请注意, .+会尽可能多地匹配换行符号以外的任何1个以上的字符,直到最后. 随后是其中一个扩展。

有点缩短版本? 量词:

(?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)$

通过使用扩展功能来简化主要部分,保持简单:

^(?=.*.(?i)(asf|avi|...etc...|zip)$).{,14}$
链接地址: http://www.djcxy.com/p/45485.html

上一篇: limit name size and file extention

下一篇: Using Tika for mime type detection gives unexpected results