我正在尝试创建一个RegEx Validator,它根据允许的扩展(用户指定的)列表检查FileUpload输入中的文件扩展名。以下是我所拥有的,但我正在努力使用文件路径中出现的反斜杠(\
)的语法。显然下面是不正确的,因为它只是逃避导致错误的(]
)。我真的很感激这里的任何帮助。似乎有很多例子,但是当我尝试时似乎都没有。
[a-zA-Z_-s0-9:\]+(.pdf|.PDF)$
答案 0 :(得分:2)
要在字符类中包含反斜杠,您需要使用特定的转义序列(\b
):
[a-zA-Z_\s0-9:\b]+(\.pdf|\.PDF)$
请注意,这可能有点令人困惑,因为在字符类之外,\b
表示单词边界。我还假设,-s
是一个错字,应该代表一个白色空间。 (否则它不应该编译,我认为)
编辑:您还需要逃脱这些点。否则它们将是任何字符的元字符,但换行符。
另一个编辑:如果您确实想要在文件名中允许连字符,则需要将连字符放在字符类的末尾。像这样:
[a-zA-Z_\s0-9:\b-]+(\.pdf|\.PDF)$
答案 1 :(得分:0)
你可能想要使用像
这样的东西[a-zA-Z_0-9\s:\\-]+\.[pP][dD][fF]$
与
相同[\w\s:\\-]+\.[pP][dD][fF]$
因为\w
= [a-zA-Z0-9_]
确保将字符-
放在[...]
列表中的第一个或最后一个项目,否则它对范围或字符具有特殊含义,例如a-z
。
\
字符也必须被另一个斜杠转义,即使在[...]
内也是如此。