念のためお知らせしますが、[] は「文字クラス」を表します。Perl の正規表現、おそらく Ruby のものでも、\b は文字クラスの外側では「単語境界」を、内側では「バックスペース」を表します。C 言語では、\b は常にバックスペース(正確には<control-H>)です。バックスペースはほとんどの場合役に立たない文字であり、単語境界は有用であるため、この再定義が行われています。
正規表現を使って「_forbidden_」または「forbidden」を検出する場合、以下のようにするのが良いでしょう:
\b_?forbidden_?\b
(すべての文字を Unicode トリックや正規表現を回避するために &#xXX; 形式でエンコードする方法も知っています。)