> puts( /[a-z 0-9]$/ =~ 'Well hello 123' )  # $ match from end = 13
> so as this one,why does * makes such a difference?

Without * regexp may match only one char at the end of the string.