g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
In your case though i
is immaterial as you dont capture [a-zA-Z]
.
For input like !@#$
if g
modifier is not there regex will return first match !
See here.
If g
is there it will return the whole or whatever it can match.See here