C# 正则表达式中的AND运算符不';行不通
我希望能够匹配这些值C# 正则表达式中的AND运算符不';行不通,c#,regex,C#,Regex,我希望能够匹配这些值 不是0.8倍 不是0.11倍 及 0-9 8次 0-9 11次 似乎没有操作员,我试过这个 ^(?=[0-9]{8}|[0-9]{11})(?=[^0]{8}|[^0]{11})$ 但它似乎根本不起作用。有什么想法吗?如果要匹配这两个集合,您可能需要查找and和OR|运算符 ^(?=[0-9]{8}|[0-9]{11})|(?=[^0]{8}|[^0]{11})$ 如果您只是想匹配一个不是08或11次,后跟0-98或11次的字符串,只需将它们按顺序排列即可。或者,可以这
^(?=[0-9]{8}|[0-9]{11})(?=[^0]{8}|[^0]{11})$
但它似乎根本不起作用。有什么想法吗?如果要匹配这两个集合,您可能需要查找and和OR
|
运算符
^(?=[0-9]{8}|[0-9]{11})|(?=[^0]{8}|[^0]{11})$
如果您只是想匹配一个不是
0
8或11次,后跟0-9
8或11次的字符串,只需将它们按顺序排列即可。或者,可以这样写
# ^(?=.{8}(?:.{3})?$)[1-9]+$
^
(?=
.{8}
(?: .{3} )?
$
)
[1-9]+
$
这个正则表达式应该可以:
^(?!0{8}$)(?!0{11}$)(?:\d{8}|\d{11})$
在线解释和演示:
或者,您可以使用
^(?!0{8}$)(?!0{11}$)\d{8}(?:\d{3})?$
哪一个做了完全相同的事情:如何做?我已经在使用OR来匹配8个数字或11个数字,但是有一个AND太用来排除8个数字=0和11个数字=0。哦,我想我明白了。如果要查找两个集合的集合,只需找到需求的交集,在本例中,它就是
[1-9]{8}|[1-9]{11}
,作为^0&0-9=1-9
@Michael Tang-+1征求意见。您能否添加一个您尝试执行的用例示例?AND运算符可以解释为一个称为断言的构造。它们在不移动匹配位置的情况下计算子表达式。示例:给定字符串“1”,表示非0和0到9的正则表达式为-^(?=[^0])(?=[0-9])
。这在经济上被写成^[1-9]
。太棒了!所以它是:而不是=。这是从哪里来的?它在.NET中是等效的吗?我哪儿都没见过。我明天会试试,然后再给你回复!谢谢@Rushino(?:…)
实际上是一个非捕获组。当您想要对正则表达式的一部分进行分组,但不需要捕获它以供以后反向引用时,可以使用它。是的,可以!抱歉耽搁了!