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

时间:2014-06-07 11:03:42

标签: c# regex

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

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

但在这种情况下,我还想验证文件名不应包含多个.

例如:

文件名不应该是这样的:abc.abc.doc它应该是这样的:abc.doc

2 个答案:

答案 0 :(得分:4)

您想要做的事情有两个通用公式。

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

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

(?i)使其不区分大小写,因此您不必重复docDOC等。例如,您可以拥有doCDoC扩展名,但原始更改中未提及。

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

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

另一种方法是允许前缀中的所有字符,除了一个点,也许还有一些"坏字符":

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

除非您确切知道文件系统允许的字符集,否则它们都不是完美契合。

答案 1 :(得分:0)

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

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

编辑:正如Jongware所提到的,&#34; OR&#34;列表应与句点文字匹配。