Using
Regex::PreSuf, you
can convert that list of numbers into a regex (or at least, a string you can use as a regex). Like this:
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";
This prints:
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[01234
+56789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[0123
+456789]|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]|[01234567
+89])|7(?:0[01234789]|[0123456789])|8[0123456789]|9[0123456789])/
Wow, that's big: length($re) is 746 bytes. It won't hurt though, you can just use it to match:
$zip = '34';
if($zip =~ /\b$re\b/o) {
print "Got a match for $zip\n";
}
which prints:
Got a match for 34
Considered by jmanning2k - Break Long Line
Unconsidered by castaway - Keep/Edit/Delete: 7/7/0 - Get a working browser, see Re^2: Monastery Gates page is too wide (causes)
Note by bart: I use Firefox as my standard browser, and it renders correctly for me. I asked on the Chatterbox, and both castaway and corion said it looked normal to them, too. They suggested it could be caused by a difference in site settings for wrapping... *shrug* I don't know any more.