• Here's one that matches numbers that are divisible by 10 (assumes 0 is divisible by 10).

\d*0

;)

• I forgot to mention, watching the regex engine step through the matches can be quite educational, using the regex debugger:

(simplified the test by removing useless cases and just using (?:...)* )

perl -Mre=debug -wle'print &quot;Divisible by 3\n&quot; if (&quot;x&quot;x shift)=~/^(?:...)*\$/;' 9

Contrast the &quot;Non-prime&quot;

perl -Mre=debug -wle 'print &quot;Prime&quot; if (1 x shift) !~ /^1?\$|^(11+?)\1+\$/' 9

with the &quot;prime&quot;

perl -Mre=debug -wle 'print &quot;Prime&quot; if (1 x shift) !~ /^1?\$|^(11+?)\1+\$/' 7

The prime case takes a LOT of operations to prove, relatively speaking (almost twice as many). So regex &quot;computers&quot; may not be the efficiency wave of the future :)

• If a=[0369] and b=[147] and c=[258],

then (a|b(a|ba*c)*(c|ba*b)|c(a|ca*b)*(b|ca*c))*

is the regular expression for determining if a number is divisible by 3

• I`m having problems with the programming syntax of RegExs, but basicly, I think you`re close; my solution was:

A = (0+3+6+9)*

B = (1+4+7)

C = (2+5+8)

r = ABABABA + ABACA + ACABA + ACACACA + ACACABABA + A

Or in other words:

r = A ( BA(BAB+C) + CA( B + CA(C+BAB) ) )* A

I can`t, for the life of me, write that in the syntax you used, so I guess that`s the end of my contribution to this thread.

Ariel

• If a=[0369] and b=[147] and c=[258],

then (a|b(a|ba*c)*(c|bb)|c(a|ca*b)*(b|cc))+ is a number divisible by 3.

• Sorry, I answer the question twice. Anyway, the first answer is correct except that it also excepts the empty string. The second answer is missing a couple of a's and should be (a|b(a|ba*c)*(c|ba*b)|c(a|ca*b)*(b|ca*c))+ to match the first answer, with the exception of the plus sign at the end.

Any Ariel's answer misses a number of the form BBCBB such as 11211, I believe.

• &quot;RegEx for divisibility by 7?&quot; he asked daringly...

• A test for seven exists, and is feasible, since you can design an automaton to do it`s job (so all you need to do is convert it to a regEx).

Comments have been disabled for this content.