> i could barely understand why the existence of $ makes such a
> difference.
> any help?

/^[a-z 0-9]*$/ must match the whole string (and it can't due to
uppercase 'W'

/^[a-z 0-9]*/ may match only empty string at the beginning (and it does)