Aug 29

Here is a Perl regular expression using Perl 5.10 extensions (this is a finite state automaton):

^(?&s)(?(DEFINE)
 (?<s>([0369](?&z)|[147](?&j)|[258](?&d)))
 (?<z>($|[0369](?&z)|[147](?&j)|[258](?&d)))
 (?<j>([0369](?&j)|[147](?&d)|[258](?&z)))
 (?<d>([0369](?&d)|[147](?&z)|[258](?&j))))
 
</d></j></z></s>

Read More