Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式中的AND运算符不';行不通_C#_Regex - Fatal编程技术网

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.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})$
    

    如果您只是想匹配一个不是
    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
    (?:…)
    实际上是一个非捕获组。当您想要对正则表达式的一部分进行分组,但不需要捕获它以供以后反向引用时,可以使用它。是的,可以!抱歉耽搁了!