REGEXP does not show the right result?
Regex doesn't work like that. You cannot specify numerical range. 


  [] brackets specifies character sets to match. ^ character inside
  [] means negation = anything outside the specified character set. I
  assume you wanted to indicate the start of the string which is also
  marked with ^ but outside of the [] part.



[^1-5] means any character which is not a number between 1 and 5
[^1-50] means any character which is not a number between 1 and 5 and not 0


In more details:

[^1-5] boxes

7 boxes of frogs matches because 7 is not a number between 1 and 5 followed by a spaces and the word boxes

48 boxes of frogs matches because 4 doesn't match (regular machine not in the first step) -> 8 is not a number between 1 and 5 followed by a spaces and the word boxes the actual match is: 8 boxes of frogs

[^1-48] boxes

Doesn't match 48 boxes of frogs because the rules specifies now characters from the set of (1,2,3,4,8) and the string fails on this check.

Fix your regex

In your case probably you want to use name regexp '^[0-9]+ boxes of frog'