my $regex = qr/\[(\d{1,20})(??{ " {" . (20 - length $1) . "}" })\]/; while () { print /$regex/ ? "yes\n" : "no\n"; } __DATA__ [12345678901234567890] [123 ] [234223423 ] [23409234329c ]