用于文件和特殊字符验证的正则表达式
本文关键字:正则表达式 验证 特殊字符 文件 用于 | 更新日期: 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
等。例如,您可以使用doC
或DoC
扩展名,但在原始替换中没有提到它。
前缀允许的字符在[a-z0-9_-]
中指定,所以如果你想要更多的字符,你可以在那里添加它们。
第二种方法:说出你不想要的
另一种方法是允许前缀中除了点和一些"坏字符"以外的所有字符:
(?i)^[^.<>:"/''|*?'t'r'n]+'.(?:docx?|rtf|pdf)$
^[^.]+([.]doc|[.]DOC|[.]docx|[.]DOCX|[.]rtf|[.]RTF|[.]pdf|[.]PDF)$
[^.]+
匹配一个或多个非句点字符。
编辑:正如Jongware所提到的,"OR"列表中的句点应该与句点文字匹配。