Skip to main content
 首页 » 编程设计

c#之如何更改正则表达式

2024年02月05日28insus

private static readonly Regex FileDirectoryRegex = new Regex(@"^[^""\\:|<>*?]*\/{0,1}$"); 
 
if (folderName.EndsWith("/") || folderName.Contains("//")) 
{ 
    throw new ArgumentException()); 
} 

如何将最后一个 if 语句验证添加到我的 FileDirectoryRegex 中?

请您参考如下方法:

您可以合并 if您的正则表达式的条件如下:

@"^(?!.*//)[^""\\:|<>*?]*(?<!/)$" 
   ^^^^^^^^              ^^^^^^  

参见 regex demo at RegexStorm (因为它是一个多行字符串演示,所以在那里稍作修改)

(?!.*//)是一个否定前瞻,如果引擎找到 //,匹配将失败。除了换行符 ( .* ) 和 (?<!/) 之外的 0+ 个字符之后的某处如果存在 /,则为否定后视,匹配失败。就在字符串结尾之前。

但是,许多用户表示将所有条件塞入 1 个正则表达式是不好的做法,请考虑选择更具可读性的方法(您现在拥有的方法,拆分条件)。