Use the last link below to see a nice graph of your RegEx, you will understand what is wrong.
Are you sure about your constraint ?
It will make the RefEx pretty complicated.
What constraint apply if user name is 1 char? is it allowed to be '_' ?
'_a_b_c_d_e' seems legal, but your RegEx will not accept it.
Just a few interesting links to help building and debugging RegEx.
Here is a link to RegEx documentation:
perlre - perldoc.perl.org[
^]
Here is links to tools to help build RegEx and debug them:
.NET Regex Tester - Regex Storm[
^]
Expresso Regular Expression Tool[
^]
RegExr: Learn, Build, & Test RegEx[
^]
This one show you the RegEx as a nice graph which is really helpful to understand what is doing a RegEx:
Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.[
^]