正则表达式如何匹配可选字符与条件

时间:2015-07-01 11:21:31

标签: regex

我需要一个正则表达式让一个String匹配,如果它是空的或者长度在8,16之间

我试过这个" (.?|(\w){8,16})$ ",但它不起作用。

谢谢

4 个答案:

答案 0 :(得分:0)

好像你想要这样的东西,

^(?:.{8,16})?$

^(?:\w{8,16})?$

答案 1 :(得分:0)

这将完成工作:^(|.{8,16})$

演示:https://regex101.com/r/cU9mK7/1

答案 2 :(得分:0)

试试这个:     ((){8,16})|({0}) 如果有帮助,请告诉我。

答案 3 :(得分:0)

你的正则表达式.ptag { position: absolute; top:0; /* set at top */ margin-left: -7%; width: 7%; border: 1px solid red; height: 100%; background: lightblue; color: white; text-align: center; } .circle{ width: 50px; height: 50px; float: right; border-radius: 100%; background: green; margin-top: -7%; color:black!important; text-align: center; line-height: 50px; /* same as height */ } “不起作用”因为一般的正则表达式如何工作,存在多个缺陷。在交替之间,首先测试最左边的一个。 (.?|(\w){8,16})$表示任何字符的0或1次(这也意味着长度为1的字符串也不正确匹配)。因此,由于.?,8个字符的字符串将与其最后一个字符匹配,并且甚至不会检查您的第二个字符串。

另一件事是使用.?而没有$,这意味着您只需检查最后8-16个字符(如果有的话)。 ^是字符串的开头,需要在这里使用(从头到尾检查整个字符串)。

^应该工作并且意味着“空”(^(|\w{8,16})$是一个空字符串,它的开头和结尾之间没有任何内容)或字符串开头和结尾之间的8-16个字符号。 / p>