MW211 EXIT

devlog
JavaScript/正規表現の変数化
2017年02月16日
┌──────────────────────────────────────┐
│文字.match(/\d/)                                                            │
└──────────────────────────────────────┘
上記のような正規表現(一致判定)があった場合に、「\d」の部分を変数化する方法。

単純に以下みたいなのはダメ。(「/」で囲っているのは単なる文字列ではない)
┌──────────────────────────────────────┐
│var str = '\d';                                                             │
│文字.match(/ + str + /)                                                     │
└──────────────────────────────────────┘

下記のように正規表現オブジェクトにしてあげるのが正解。
┌──────────────────────────────────────┐
│var str = '\\d';                                                            │
│var reg = new RegExp(str);                                                  │
│文字.match(reg)                                                             │
└──────────────────────────────────────┘
ただし、注意すべきなのは「\」が(「/」で囲う場合はそのままでいいが)
文字列となると「\\」で表記しなければならない点。

代入後、(「str」を)を「\」→「\\」に置換すれば、意識しなくても済むかと思ったが
代入の時点で「\」が落ちてしまうので置換が効かない。
分類:JavaScript