エンジニアのひよこ_level10

【毎日更新!】新卒4年目エンジニアブログです!

【JavaScript】match関数とRegExpを組み合わせた時の罠【1070日目】

一見動きそうなコード

'27<br/>(日)'.match(new RegExp('\(日\)'));
'日数'.match(new RegExp('\(日\)'));

これ動きそうって思ってたら、動かないんですよ/(^o^)\

なんで?戻り値を見る

new RegExp('\(日\)') の戻り値が /(日)/ になって、
matchの中には /(日)/ が入るから、
日のみで検索されました/(^o^)\

直すなら?

なのであえてこのままの構文で正しく動かすにはこう。

'27<br/>(日)'.match(new RegExp('\\\(日\\\)'));
'日数'.match(new RegExp('\\\(日\\\)'));

RegExp使わないならこう

'27<br/>(日)'.match(/\(日\)/);
'日数'.match(/\(日\)/);