まじレスすると=>の左辺値を文字列として解釈してくれるパターンこうなんだけどね。

/^-?[a-zA-Z_]+\w*$/

数字で始まったり、先頭のマイナスの直後が数字だったりすると数値として解釈される。
さらにその後がアルファベットだったりすると構文エラーになる。

ハッシュの要素参照の{}も同じだね。

構文エラーになる分には気が付くからいいけど、01=>'a'とか、0_2=>'b'とか、-03=>'c'とかするとはまるよ。