用于文件和特殊字符验证的正则表达式

本文关键字:正则表达式 验证 特殊字符 文件 用于 | 更新日期: 2023-09-27 18:07:30

我有一个正则表达式,它只验证文件上传.doc, .docx, .DOCX, .rtf.pdf。参见下面的正则表达式代码:

"^.+(.doc|.DOC|.docx|.DOCX|.rtf|.RTF|.pdf|.PDF)$" 

但是在这个场景中,我还想验证文件名不应该包含多个.

例如:

文件名不应该像这样:abc.abc.doc,而应该像这样:abc.doc .

用于文件和特殊字符验证的正则表达式

有两个通用的公式。

第一种方法:说出你想要的

(?i)^[a-z0-9_-]+'.(?:docx?|rtf|pdf)$

(?i)使其不区分大小写,因此您不必重复doc, DOC等。例如,您可以使用doCDoC扩展名,但在原始替换中没有提到它。

前缀允许的字符在[a-z0-9_-]中指定,所以如果你想要更多的字符,你可以在那里添加它们。

第二种方法:说出你不想要的

另一种方法是允许前缀中除了点和一些"坏字符"以外的所有字符:

(?i)^[^.<>:"/''|*?'t'r'n]+'.(?:docx?|rtf|pdf)$
这两种方法都不适合,除非您确切地知道文件系统允许的字符集。

^[^.]+([.]doc|[.]DOC|[.]docx|[.]DOCX|[.]rtf|[.]RTF|[.]pdf|[.]PDF)$

[^.]+匹配一个或多个非句点字符。

编辑:正如Jongware所提到的,"OR"列表中的句点应该与句点文字匹配。