Sort:  

Sure. But here's a solution in Perl with very few headaches. I can also write it in C++, C, Python or Javascript rather painlessly. I can write it in any other language you prefer with a little bit of reference work.

@split = split(/\./, $username);
$l = length($username);
if ($l > 16) { return 0; }
else {
    foreach $seg (@split) {
       if (($seg =~ /-/) && ($seg !~ /\b\-*\b/)) {
          return 0;
      }
       elsif ($seg !~ /^[a-z0-9][a-z0-9\-]+[a-z0-9]+$/) {
          return 0;
       }
       else {
          return 1;
       }
    }
}

Coin Marketplace

STEEM 0.09
TRX 0.30
JST 0.037
BTC 104437.06
ETH 3521.32
USDT 1.00
SBD 0.58