我希望能够匹配这些值。
和
似乎没有AND运营商我试过这个..
^(?=[0-9]{8}|[0-9]{11})(?=[^0]{8}|[^0]{11})$
但它似乎根本不起作用。有什么想法吗?
答案 0 :(得分:1)
如果您想要匹配这两套,您可能正在寻找union of two sets和OR |
运算符。
^(?=[0-9]{8}|[0-9]{11})|(?=[^0]{8}|[^0]{11})$
如果您只想匹配一个非0
8或11次的字符串,然后匹配0-9
8或11次,请将它们整理好。
答案 1 :(得分:1)
这个正则表达式应该有效:
^(?!0{8}$)(?!0{11}$)(?:\d{8}|\d{11})$
在线解释和演示:http://regex101.com/r/sH1nZ5
或者,您可以使用
^(?!0{8}$)(?!0{11}$)\d{8}(?:\d{3})?$
答案 2 :(得分:0)
或者,它可以这样编写
# ^(?=.{8}(?:.{3})?$)[1-9]+$
^
(?=
.{8}
(?: .{3} )?
$
)
[1-9]+
$