JavaScript で正規表現に変数を用いる方法

Dec 1st, 2022 javascript

状況

データ例(適当)

const array = [
  {
    name: 'hoge',
    message: 'aaaaa',
  },
  {
    name: 'fuga',
    message: 'bbbbb',
  },
  {
    name: 'hoge',
    message: 'ccccc',
  },
  {
    name: 'fuga',
    message: 'ddddd',
  },
  {
    name: 'hoge',
    message: 'eeeee',
  },
  {
    name: 'hoge',
    message: 'fffff',
  },
  {
    name: 'piyo',
    message: 'ggggg',
  },
];

ここから特定の文字列が含まれたメッセージだけを抽出したい!

解決策

const abArray = array.filter(x => x.message.match(/.*(aa|bb).*/));
console.log(abArray);

実行結果

(2) [{}, {}]
  0: {name: "hoge", message: "aaaaa"}
  1: {name: "fuga", message: "bbbbb"}
  length: 2
const targetArray = ['c','f','g'];
const regExp = new RegExp(`.*(${targetArray.join('|')}).*`);
const cfgArray = array.filter(x => x.message.match(regExp));
console.log(cfgArray);

実行結果

(3) [{}, {}, {}]
  0: {name: "hoge", message: "ccccc"}
  1: {name: "hoge", message: "fffff"}
  2: {name: "piyo", message: "ggggg"}
  length: 3

まとめ

以上だ( `・ω・)b