在这里你去(在
PHP的PCRE语法):
^(0*|(1(01*?0)*?1|0)+?0{4})$
用法:
preg_match('/^(0*|(1(01*?0)*?1|0)+?0{4})$/',decbin($number));
现在,为什么它的作品:
我们知道,48只是3 * 16,16只是2 * 2 * 2 * 2.所以,任何可被2 ^ 4整除的数字将在其二进制表示0中具有4个最多位.因此,通过以0 {4} $结束正则表达式相当于该数可被2 ^ 4(或16)整除.那么,左边的位需要被3整除.所以使用this answer的正则表达式,我们可以判断它们是否可被3整除.所以如果整个正则表达式匹配,这个数字可以被3和16整除,因此48 …
QED …
(注意,当$number为0时,前导0 |个案处理失败的匹配).我已经测试了所有数字从0到48 ^ 5,它正确匹配每次…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。