\wに日本語文字も含まれるが、$KCODEを適切に設定するか、 個別に指定する必要がある。 (\bは\wと\Wを表す幅0の正規表現。)
# euc-jpの環境の場合 /a\b/ === 'あaあ' #=> 2 /\ba/ === 'あaあ' #=> nil /\ba/e === 'あaあ' #=> nil /\ba/e === 'あaあ' #=> nil # Shift_JISの環境の場合 /a\b/ === 'あaあ' #=> 3 /\ba/ === 'あaあ' #=> nil /\ba/s === 'あaあ' #=> nil /\ba/s === 'あaあ' #=> nil
Regexp#eql?とRegexp#hashは定義されていない (Object#eql?とObject#hashが使われる)ので、 Hashのキーには向いていません。
//.eql? // #=> false
ある文字列を含む正規表現を作る場合には Regexp#quoteする必要があります。 *1
a = 'a.c' /^#{a}$/ === 'abc' #=> 0 (マッチした) /^#{Regexp.quote a}$/ === 'abc' #=> nil (マッチしない)
*1セキュリティホールになる可能性もあるので十分注意してください。