regex中的AND运算符不工作

本文关键字:工作 运算符 AND 中的 regex | 更新日期: 2023-09-27 17:51:03

我希望能够匹配这些值。

  1. 不为0次
  2. not 0
  3. 11次

  1. 0-9次
  2. 0-9 11次

似乎没有AND操作符,我试过了…

^(?=[0-9]{8}|[0-9]{11})(?=[^0]{8}|[^0]{11})$

但它似乎根本不起作用。有什么想法吗?

regex中的AND运算符不工作

这个正则表达式应该可以工作:

^(?!0{8}$)(?!0{11}$)(?:'d{8}|'d{11})$

在线讲解示范:http://regex101.com/r/sH1nZ5

或者,您可以使用

^(?!0{8}$)(?!0{11}$)'d{8}(?:'d{3})?$

做同样的事情:http://regex101.com/r/iX2xM2

如果您想匹配两个集合,您可能正在寻找两个集合的并集和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]+ 
 $