I'm trying to write a small regexp checker for mail with following conditions:
1) domain name between 2 and 128 symbols (numbers, alphabet and .-) = /^[a-z0-9_.-]{2,128}$/
2) minus symbol - not in the begining or the end of the login or domain name = /^[^-]|[^-]$/
3) account name not less then 64 symbols = /^.{64,}$/
4) two dots together are disallowed = /^([^.]|([^.]).[^.])*$/
5) if double quotes would exist in the string they will be twin (have a pair)
6) !,: - could exist between double quotes
What could I use from the regexp to perform theese conditions and bring them together in accordance with claims?