我有一个正则表达式,仅验证要上传.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
等。例如,您可以具有doC
或DoC
扩展名,但在本文档中未提及原始的交替。前缀的允许字符在
[a-z0-9_-]
中指定,因此,如果需要更多字符,可以在此处添加它们。第二种方法:说出您不想要的内容
另一种方法是允许前缀中的所有字符(除了点之外,还可以包括许多“不良字符”):
(?i)^[^.<>:"/\\|*?\t\r\n]+\.(?:docx?|rtf|pdf)$
除非您确切知道文件系统允许的字符集,否则两者都不是完美的选择。
关于c# - 用于验证文件和特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24096498/