Update regex and tests to support common RFC permitted addresses, filter invalid domain formats

1. Allow leading/trailing digits ([0-9]), hypen (-) and underscore (_) in local_part
2. Reject domain containing sequential periods (.)
3. Reject domain name containing underscore (_)