正则表达式匹配除字符列表之外的所有内容

时间:2013-11-06 08:04:12

标签: c# .net regex vb.net

我希望匹配包含指定字符[I|V|X|M|C|D|L]以外的所有内容的行。

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

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

应匹配 -

name is a

不应该匹配 -

edition is I

3 个答案:

答案 0 :(得分:11)

尝试这种模式:

^[^IVXMCDL]*$

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

另请注意,根据您的使用方式,您可以使用更简单的模式:

[IVXMCDL]

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

答案 1 :(得分:3)

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

即可
^[^IVXMCDL]*$

Regular expression visualization

Debuggex Demo

答案 2 :(得分: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;
        }