use Regex::PreSuf; my $re = presuf(10..374, 376..379, 382..385, 388..499, 530..534, 541..543, 618, 619, 700..704, 707..709); print "Regex: /$re/\n"; #### Regex: /(?:1(?:0[0123456789]|1[0123456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[0123456789]|8[0123456789]|9[0123456789]|[0123456789])|2(?:0[0123456789]|1[0123456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[0123456789]|8[0123456789]|9[0123456789]|[0123456789])|3(?:0[0123456789]|1[0123456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[012346789]|8[234589]|9[0123456789]|[0123456789])|4(?:0[0123456789]|1[0123456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[0123456789]|8[0123456789]|9[0123456789]|[0123456789])|5(?:3[01234]|4[123]|[0123456789])|6(?:1[89]|[0123456789])|7(?:0[01234789]|[0123456789])|8[0123456789]|9[0123456789])/ #### $zip = '34'; if($zip =~ /\b$re\b/o) { print "Got a match for $zip\n"; } #### Got a match for 34