擅长:python、mysql、java
<p>这应该有效:</p>
<pre><code>^([0-9]{1,3}\.){3}[0-9]{1,3}($|/(16|24))$
</code></pre>
<p>它检查<code>$</code>(<em>行尾</em>)或<code>/</code>和<code>16</code>或<code>24</code>。</p>
<p>正如您所说的<code>?</code>将组标记为可选,这意味着如果可能的话,它将尝试将其包含在匹配中。但在某些情况下,它不能喜欢<code>192.168.0.0/aaaa</code>,但因为它是可选的,所以它仍然会匹配<em>其他</em>部分。</p>
<p>这就是为什么上面的regex更适合您的需要。这样,只有当它以<code>/24</code>、<code>/16</code>或<em>行尾</em>例如<code>192.168.0.1</code>结尾时,才能获得匹配。</p>