a)
^ Indicates the beginning of the string
{3, 16} Indicates that the subpattern must repeat from 3 to 16 times
[a-z0-9_-] Indicates that string can only contain "a - z", "0 - 9" and underscore "_" and a hyphen "-"
$ Indicates the end of the string
b)
^[\w-\.]+@([\w-]+\.)+\.co\.za$