Why not just use split()? Then you can do a simple regex on each element:
####################### use strict; use warnings; my $string = '1-10;25;33;1-00-250'; my @array = split(/;/,$string); foreach my $element(@array){ if($element =~ /^\d+-?\d*?$/){ print "$element => valid\n"; }else{ print "$element => bad input\n"; } } ######################## Of course you could also skip the intermediary array and just do foreach my $element(split(/;/,$string)){ I just added it for clarity. -----Original Message----- From: Ryan Moszynski [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 12, 2006 3:09 PM To: beginners Subject: regex repetition I need to write some code to allow users to specify which of a whole bunch of elements(e.g.512/1024) that they want to view. My idea for how to do this was to have them input a semicolon delimited list, for example: 1-10;25;33;100-250 Snip> if ($list1 =~ /(\s*\d+;)+/g || $list1 =~ /(\s*\d+;)+/g ) { <snip> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>