6

我想匹配包含除指定字符之外的所有内容的行[I|V|X|M|C|D|L]

new Regex(@"^(.*) is (?![I|V|X|M|C|D|L].*)$")

应该匹配除OR列表中提到的字符之外的所有内容。

应该匹配 -

name is a

不应该匹配 -

edition is I
4

3 回答 3

16

试试这个模式:

^[^IVXMCDL]*$

这将匹配字符串的开头,后跟零个或多个字符类中指定的字符以外的字符,然后是字符串的结尾。换句话说,它不会匹配任何包含这些字符的字符串。

另请注意,根据您使用它的方式,您可能会使用如下更简单的模式:

[IVXMCDL]

并拒绝任何与模式匹配的字符串。

于 2013-11-06T08:05:47.007 回答
7

在这种情况下你不需要|,只需使用^[^IVXMCDL]*$

^[^IVXMCDL]*$

正则表达式可视化

调试演示

于 2013-11-06T08:06:14.147 回答
0
 private  bool IsValid(String input)
        {
            bool isValid = false;
            // Here we call Regex.Match.
            Match match = Regex.Match(input, @"^[^IVXMCDL]*$");

            // Here we check the Match instance.
            if (match.Success)
            {
               isValid = true;
            }
            else
            {
                isValid = false;
            }

          return isValid;
        }
于 2013-11-06T08:12:31.893 回答