/^[a-zA-Z0-9_-]{3,16}$/
^(?=[a-zA-Z0-9._]{8,20}$)(?!.*[_.]{2})[^_.].*[^_.]$
# works in most newer browsers
^(?=.{8,20}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$
└─────┬────┘└───┬──┘└─────┬─────┘└─────┬─────┘ └───┬───┘
│ │ │ │ no _ or . at the end
│ │ │ │
│ │ │ allowed characters
│ │ │
│ │ no __ or _. or ._ or .. inside
│ │
│ no _ or . at the beginning
│
username is 8-20 characters long
# works in all browsers, but does the same as the above RegEx
^(?=[a-zA-Z0-9._]{8,20}$)(?!.*[_.]{2})[^_.].*[^_.]$
let username = '';
username = username.replace(/s/g,'_');
username = username.replace(/-/g,'.');
username = username.match(/[a-zA-Z0-9.s]+/g).join('_');
^[A-Za-z][A-Za-z0-9_]{2,16}$
let userCheck = /^[a-z][a-z]+d*$|^[a-z]dd+$/i;