我有一个正则表达式,仅验证要上传.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)使其不区分大小写,因此您不必重复docDOC等。例如,您可以具有doCDoC扩展名,但在本文档中未提及原始的交替。

前缀的允许字符在[a-z0-9_-]中指定,因此,如果需要更多字符,可以在此处添加它们。

第二种方法:说出您不想要的内容

另一种方法是允许前缀中的所有字符(除了点之外,还可以包括许多“不良字符”):

(?i)^[^.<>:"/\\|*?\t\r\n]+\.(?:docx?|rtf|pdf)$


除非您确切知道文件系统允许的字符集,否则两者都不是完美的选择。

关于c# - 用于验证文件和特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24096498/

10-13 06:53
查看更多