1

我有一个 C# .Net MVC 3 Web 应用程序。我需要使用符合 Windows 文件夹名称规则的 RegEx 数据注释来装饰属性。无效字符为:\、/、*、:、? , “, <, >, |

我不是一个伟大的 RegEx 开发人员,我尝试了一些 RegEx,但他们都不允许我们的应用程序需要允许的 - 字符。

我努力了:

^[a-zA-Z0-9]+(([_][a-zA-Z0-9])?[a-zA-Z0-9]*)*$

^[a-zA-Z''-'\s]{1,40}$

^( [a-zA-Z] )( ( [a-zA-Z_\-\s0-9\.\)\(] )( [^\\!@#$%^&/:*?<>""|]* ) )*$

有效的:

MyFilemane-!@#$%^&

无效的:

MyFilename|
MyFileName\
4

2 回答 2

4

您可以使用以下命令在不使用正则表达式的情况下执行此操作:

请参阅文档,它们提供了实现这些方法的完整示例。

要检查您的路径或文件名:

var invalidPath = Path.GetInvalidPathChars(path)
var invalidFN   = Path.GetInvalidFileNameChars(file)

我也会为此实现StringBuilder 类

如果您希望使用正则表达式执行此操作,这应该适合您。

^[a-zA-Z]+?[^\\\/:*?"<>|\n\r]+$
于 2013-09-19T16:13:13.527 回答
0

我在以下网址RegEx 中找到了有效 Windows 文件夹/文件名的解决方案

正则表达式解析是:

^[^\\\./:\*\?\""<>\|]{1}[^\\/:\*\?\""<>\|]{0,254}$

这也适用于 255 个字符的限制要求。

MVC3 C# .Net 代码中应用的分辨率。标题是我的 C# 类的属性:

[Display(Name = "Title")]
[Required(ErrorMessage = "Title is required.")]
[RegularExpression(@"^[^\\\./:\*\?\""<>\|]{1}[^\\/:\*\?\""<>\|]{0,254}$", 
    ErrorMessage = @"The following special characters are not allowed: \ / * :  ?  "" < > | ")]
public virtual string Title { get; set; }
于 2013-09-19T18:18:16.517 回答