c# - .NET 正则表达式 - "Not"匹配

标签 c# .net regex

我有一个正则表达式:

12345678|[0]{8}|[1]{8}|[2]{8}|[3]{8}|[4]{8}|[5]{8}|[6]{8}|[7]{8}|[8]{8}|[9]{8}

如果字符串包含 12345679 或 11111111 或 22222222 ... 或 ... 999999999,则匹配。

如果不是上述情况,我如何才能将其更改为仅匹配? (不幸的是,我不能在 C# 中使用 !IsMatch)...编辑,因为这对我来说是黑盒代码,我正在尝试在现有配置文件中设置正则表达式

最佳答案

这将匹配所有...

foundMatch = Regex.IsMatch(SubjectString, @"^(?:(?!123456789|(\d)\1{7}).)*$");

除非在字符串中找到“禁止”序列之一。

如您所见,

使用 !isMatch

编辑:

添加第二个约束可以通过先行断言来完成:

foundMatch = Regex.IsMatch(SubjectString, @"^(?=\d{9,12})(?:(?!123456789|(\d)\1{7}).)*$");

关于c# - .NET 正则表达式 - "Not"匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327478/

相关文章:

c# - 如何在没有时间的情况下获取当前日期?

.net - 为什么过滤事件时某些 GUI 控件的类型智能感知/类型推断存在差异

c++ - boost::regex, match_results::operator[] - 神秘的 "sub += 2"行

c# - MySQL C# 异步方法不起作用?

c# - 通过反射获取命名空间中的所有类型

c# - 使用C#Web App发送电子邮件

Javascript - 用正则表达式替换所有

c# - 获取数组中元素索引的快速方法是什么?

.net - 在 .NET 4.5 中动态生成代码的最简单方法是什么?

c++ - unicode 正则表达式 C++