Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

正規表現:RegExp('Hello\sworld!')はマッチしない

ハマったのでシェアします。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?