【发布时间】:2017-01-13 10:29:00
【问题描述】:
我想写一个匹配的正则表达式:。
[\d]{6,}
( = 6 个连续数字) 但这不匹配:
0[\d]{9}
(以0开头的10个连续数字)
显然,我可以通过 2 个 C# 条件轻松完成。 if( Regex1.Match(pattern) && ! Regex2.Match(pattern) ) 但在我的代码的特定情况下,我需要通过一次检查来评估两者。
我想知道是否有办法用一个正则表达式检查这两个条件?
我需要的具体例子:
blabla
12345678 should be found
0123456789 should not be found
0123456 should be found
40666666666 should be found
bla
提前致谢。
EDIT : 编辑了预期的匹配
【问题讨论】:
-
请提供真实的测试用例。目前尚不清楚这些数字块出现在什么上下文中。实际上,我认为您可以尝试使用众所周知的技术来匹配您不需要的内容并捕获您需要的内容:
0\d{9}|(\d{6,})。你的最终目标是什么? -
您的意思是 6 位 还是 10 位(从零开始) 在一个唯一的正则表达式中?
-
@WashingtonGuedes:OP 提到了 C#。
-
@A.D.:如果您将数字作为单个字符串进行检查,您也可以使用
^(?!0\d{9}$)\d{6,}$ -
然后显示你正在使用的代码。如果你可以切换到 PCRE.NET,你可以使用
\b0\d{9}\b(*SKIP)(*F)|\d{6,}。但是,我认为您应该能够通过我分享的方法使用本机 C# 正则表达式代码。
标签: regex