I need to replace all chars which are not match with range a-zA-Z_-0-9. So I do val.replace(/[^a-zA-Z_-0-9]/g, \'\') but get error. How can I bit t
You expect that - character to be parsed as being literal, but it is in fact parsed as a range: _-0 means _ to 0, just like a-z means a to z. However, since _ has a higher character code than 0, you get an error.
In your case, just escape it: \-. This is parsed as the - character.
You need to escape the "-"
val.replace(/[^a-zA-Z_\-0-9]/g, '')