ハマったのでシェアします。
RegExpを使ってマッチさせるには以下のように書きます:
var re = new RegExp('Hello\\sworld!');
\s
や\W
といった正規表現を使う場合は、RegExpを使うとわかりにくくなってしまうので、個人的にはそういうときは以下のような書き方にしておいた方が良いと思います。
var re = /Hello\sworld!/;
なお、以下の追記2にある通りRegExp
を使わないとできないこともあります。
追記1
mattnさんより以下のアドバイスをいただきました。ありがとうございます。
/Hello\sworld!/
は正規表現リテラルなので\s
をエスケープする必要はありません(見たまま解釈されます)。
しかし
RegExpr('Hello\sworld!')
は文字列なのでRegExp
に正しく\s
(つまり\
とs
の2文字)を渡すにはエスケープして\\s
とする必要があります。
追記2
think49さんより以下のアドバイスをいただきました。ありがとうございます。
new RegExp
は引数に変数を取れるのが利点です。
例えば、次のケースではnew RegExp
を使わないと書けません。
var word = 'World!';
var reg = new RegExp('Hello\\s' + word);
console.log(reg.test('Hello World!')); // true
実用的には正規表現メタキャラクタのエスケープ処理が必要です
ブログやってます:Weed software