加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 我可以使用正则表达式来搜索数字的倍数吗?

发布时间:2020-12-13 22:56:12 所属栏目:百科 来源:网络整理
导读:我正在搜索一个大项目的所有例子,我已经宣布了一个数组,[48]作为大小或任何倍数的48. 我可以使用正则表达式函数来查找48 * n的匹配吗? 谢谢. 在这里你去(在 PHP的PCRE语法): ^(0*|(1(01*?0)*?1|0)+?0{4})$ 用法: preg_match('/^(0*|(1(01*?0)*?1|0)+?0{4}
我正在搜索一个大项目的所有例子,我已经宣布了一个数组,[48]作为大小或任何倍数的48.

我可以使用正则表达式函数来查找48 * n的匹配吗?

谢谢.

在这里你去(在 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,它正确匹配每次…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读