/^1?$/ 和 /^(11+?)/1+$/
- 第一部分:/^1?$/, 这个部分相信不用我多说了,其表示匹配“空串”以及字串中只有一个“1”的字符串。
- 第二部分:/^(11+?)/1+$/,这个部分是整个表达式的关键部分。其可以分成两个部分,(11+?)和/1+$,前半部很简单了,匹配以“11”开头的并重复0或n个1的字符串,后面的部分意思是把前半部分作为一个字串去匹配还剩下的字符串1次或多次(这句话的意思是——剩余的字串的1的个数要是前面字串1个数的整数倍)。
可见这个正规则表达式是取非素数,要得到素数还得要对整个表达式求反
让我们来举一反三,根据上述的这种方法,我们甚至可以用正则表达式来求证某方式是否有解,如:
- 二元方程:17x + 12y = 51 判断其是否有解的正则表达式是:^(.*)/1{16}(.*)/2{11}$
- 三元方程:11x + 2y + 5z = 115 判断其是否有解的正则表达式是:^(.*)/1{10}(.*)/2{1}(.*)/3{4}$
如果无法参透其中的奥妙的话,你可以读读这篇英文文章。
http://blog.stevenlevithan.com/archives/algebra-with-regexes