Regex 代码覆盖率和正则表达式(dotCover)

Regex 代码覆盖率和正则表达式(dotCover),regex,unit-testing,nunit,code-coverage,dotcover,Regex,Unit Testing,Nunit,Code Coverage,Dotcover,我正在使用dotCover检查我的代码覆盖率。 在一行中,我使用正则表达式检查给定字符串是否有效 if (!Regex.IsMatch(value, @"[a-zA-Z\-]")) throw new NullReferenceException("value"); 我已经创建了一个单元测试来检查我的代码是否按预期工作 但是dotCover不承认我的代码已被覆盖。当然,因为我不知道 用每个可能的(不匹配的)字符测试它 解决该问题的好方法是什么?如果要检查字符串是否包含非ascii字母或

我正在使用dotCover检查我的代码覆盖率。 在一行中,我使用正则表达式检查给定字符串是否有效

if (!Regex.IsMatch(value, @"[a-zA-Z\-]"))
    throw new NullReferenceException("value");
我已经创建了一个单元测试来检查我的代码是否按预期工作

但是dotCover不承认我的代码已被覆盖。当然,因为我不知道 用每个可能的(不匹配的)字符测试它


解决该问题的好方法是什么?

如果要检查字符串是否包含非ascii字母或连字符的字符,可以使用以下模式之一:

使用否定字符类(搜索字符):

不带(描述所有字符串):

如果也要防止空字符串,请执行以下操作:

if (Regex.IsMatch(value, @"[^a-zA-Z-]|^$"))


如果(Regex.IsMatch(value,@“[^a-zA-Z-]”)使用求反字符类
。如果类中没有字符(除ascii字母和连字符外的所有字符),则会引发异常。好主意@CasimiretHippolyte!这比描述所有字符串更简单:
if(!Regex.IsMatch(value,@“^[a-zA-Z-]*$”)
。但是请注意,如果需要,您需要检查字符串是否为空。
if (!Regex.IsMatch(value, @"^[a-zA-Z-]*$"))
if (Regex.IsMatch(value, @"[^a-zA-Z-]|^$"))
if (!Regex.IsMatch(value, @"^[a-zA-Z-]+$"))