正则表达式判断一个二进制数是否能被3整除
发布时间:2020-12-14 05:35:23 所属栏目:百科 来源:网络整理
导读:一个01串S能匹配如下表达式当且仅当S是一个可以被3整除的二进制数, ^1((10*1)|(01*0))*10*$ 可以手动试一试,输入如下代码到浏览器的控制台,回车运行: javascript:alert(/^1((10*1)|(01*0))*10*$/.test("1000000100")) 原理其实很简单,虽然我还不会正则
一个01串S能匹配如下表达式当且仅当S是一个可以被3整除的二进制数, ^1((10*1)|(01*0))*10*$ 可以手动试一试,输入如下代码到浏览器的控制台,回车运行: javascript:alert(/^1((10*1)|(01*0))*10*$/.test("1000000100")) 原理其实很简单,虽然我还不会正则表达式,这里只解释下其对应的有限状态自动机。 有限状态自动机和正则表达式是可以相互转化的。 建立有限状态自动机,定义每个状态为模3的余数,起始态和终态都是0, ? ?举个例子: 对于 S=11011,初始在状态0,S取第一位1,到状态1;S取第二位1,到状态0;S取第三位0,仍在状态0;S取剩下两位,0变1又回到0。最终在0,说明S模3的余数为0,能整除。 ? ? 参考链接: 1.?http://www.matrix67.com/blog/archives/1089 2.?https://blog.csdn.net/happymff/article/details/72453290 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |