排除正则表达式中的匹配项
本文关键字:正则表达式 排除 | 更新日期: 2023-09-27 18:23:59
是否可以忽略正则表达式中的特定匹配?
例如:
我有以下正则表达式:
^[0-9]{2}$
但我不想匹配特定的字符串,比如说"12"。
我想我正在为正则表达式寻找类似和运算符的东西,但在.NET/C#中找不到这样的东西。
我更愿意在正则表达式本身中执行此操作。有什么建议吗?
^[0-9]{2}(?<!12)$
或者相反:
^(?!12)[0-9]{2}$
请注意,在这种特定的情况下,否定1个特定匹配很容易。有时不是,有时(几乎)不可能,取决于正则表达式。
您可以使用这个丑陋的正则表达式:
^([02-9][0-9] | [1][013-9])$
翻译成通俗英语,意思是"不以1
开头的两位字符串,或以1
开头但第二位没有2
的两位数字符串"。
你最好做这样的事情:
if (Regex.IsMatch(MyString, @"^[0-9]{2}$") && MyString != "12")
{
// Do something
}
Regex非常强大,但重要的是要知道何时不使用它们:)