in reply to Regex Quantifiers

Your problem is your initial greedy .* - that grabs as much as is can, leaving the minimum match for the next term. I don't follow why you would want .* (particularly since you don't use either a ^ or $ anchor). You will get your expected results with either

($Regex1) = ($String =~ /.*?(\d{6,8}).*/);

or

($Regex1) = ($String =~ /(\d{6,8})/);

See perlre or perlretut for details, in particular Matching repetitions.

As a side note, please wrap code in <code> tags - see Markup in the Monastery for details.