This seems to match the rules I have defined, but I only starting learning regex tonight, so I am wondering if it is correct.
Rules:
In my opinion, adding a limited scope to this model would be better
[a-zA-Z0-9]+([_ -]?[a-zA-Z0-9]){5,40}$