1

我正在尝试创建一个 RegEx 验证器,它根据允许的扩展名列表(用户指定)检查 FileUpload 输入中的文件扩展名。以下是据我所知,但我正在努力解决\文件路径中出现的反斜杠 ( ) 的语法。显然下面是不正确的,因为它只是转义了]导致错误的 ( )。我会非常感谢这里的任何帮助。那里似乎有很多例子,但当我尝试它们时似乎没有一个有效。

[a-zA-Z_-s0-9:\]+(.pdf|.PDF)$
4

2 回答 2

2

要在字符类中包含反斜杠,您需要使用特定的转义序列 ( \b):

[a-zA-Z_\s0-9:\b]+(\.pdf|\.PDF)$

请注意,这可能有点令人困惑,因为在字符类之外,\b它表示单词边界。我还假设这-s是一个错字,应该代表一个空白。(否则它不应该编译,我认为)

编辑:您还需要避开这些点。否则,它们将成为除换行符之外的任何字符的元字符。

另一个编辑:如果您确实希望在文件名中允许使用连字符,则需要将连字符放在字符类的末尾。像这样:

[a-zA-Z_\s0-9:\b-]+(\.pdf|\.PDF)$
于 2012-09-27T12:04:48.550 回答
0

你可能想使用类似的东西

[a-zA-Z_0-9\s:\\-]+\.[pP][dD][fF]$

这与

[\w\s:\\-]+\.[pP][dD][fF]$

因为\w=[a-zA-Z0-9_]

确保字符-作为列表中的第一项或最后一项[...],否则对于范围或字符具有特殊含义,例如a-z.

字符也\必须用另一个斜线转义,即使在[...].

于 2012-09-27T12:06:10.980 回答