我有一个正则表达式,它只验证要上传的文件 .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)$
除非您确切知道您的文件系统允许的字符集,否则两者都不是完美的选择。
