排除正则表达式中的匹配

时间:2012-02-08 15:59:45

标签: c# .net regex

是否可以忽略正则表达式中的特定匹配?

例如:

我有以下正则表达式:

^[0-9]{2}$

但我不想匹配特定的字符串,让我们说“12”。

我认为我正在为正则表达式寻找类似运算符的东西,但是在.NET / C#中找不到这样的东西。

我更喜欢在正则表达式中这样做。 有什么建议或建议吗?

3 个答案:

答案 0 :(得分:4)

^[0-9]{2}(?<!12)$

反之亦然:

^(?!12)[0-9]{2}$

请注意,在此特定的情况下,否定1个特定匹配很容易。有时它不是,有时它(左)是不可能的,取决于正则表达式。

答案 1 :(得分:1)

你最好做一些事情:

if (Regex.IsMatch(MyString, @"^[0-9]{2}$") && MyString != "12")
{
    // Do something
}

正则表达式非常强大,但知道何时不使用它们很重要:)

答案 2 :(得分:1)

你可以使用这个丑陋的正则表达式:

^([02-9][0-9] | [1][013-9])$

翻译为普通英语,表示“不是以1开头的两位数字符串,或者是以1开头但没有2的两位数字符串作为第二个数字“。