所谓正则表达式就是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。大部分人对正则表达式的认识都停留于用它来去查找一些符合需求规则的字符串,或者拿来替换一些特定的字符串,可是其实正则表达式所能做的东西远远不止这些。
用正则表达式来判断某个数是否能被某个数整除:
大部分一开始看到这个都会觉得这不是扯蛋吗,正则表达式还能处理运算?没可能嘛(我的第一反应也是这样)!我之所以写这篇博文不是说我自己对正则表达式很熟悉,我只是因为看到了一些amazing的东西,觉得需要和大家分享分享。也希望有这方面的大神能出来分享分享。我看到这个东西后马上去查资料,然后找到一篇文章,讲得就是如果用正则表达式来判断某个数是否能被某个数整除,其中说到的最核心的方法就是:有限状态自动机。我和大部分的人一样,是第一次听到这个名词。具体意思大家去搜一搜吧,因为我自己也说不清楚。反正就是有这个一个东西。下面是一些例子:
/^1((10*1)|(01*0))*10*$/ : 判断一个二进制能否被3整除
/\[[-+]?(?:[048]|\d*[02468][048]|\d*[13579][26])]/: 判断一个十进制能否被4整除
我不是想跟大家说我的正则表达式很屌很屌,我只是作为一个学习者,看到了这样的一个厉害的东西,希望有更多的人也能够了解,学习到。
网上还是有不少的关于这方面的介绍,不过都是比较简单,没有很深入的。有兴趣的小伙伴们可以去学习学习。
下面是一些有关的文章链接:
http://www.matrix67.com/blog/archives/1089
http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html
浙公网安备 33010602011771号