Regular Expressionの復習:String Method #2

先週に引き続き、Regular ExpressionとString Methodを組み合わせると何ができるか見ていこう。
今回はこちらのString Methodにフォーカスをあてる。

replace()メソッド

replaceメソッドを使うと以下の書き方をすることができる。

const 置換後の新しいテキスト = 元のテキスト.replace(pattern, replacement)

このときpatternに使うRegular Expressionにg(global)フラグをつけておくと、パターンに一致する部分が複数箇所あっても、全て置き換えてくれる。replaceAll()というメソッドも存在するが、replace()でgフラグ付きのregex使う場合とは結果が変わらない。

const text = "I would love to visit Australia to observe platypuses, especially one with a baby platypus.";
const pattern = /\bplatypus\w*/g; // platypusで始まる単語

const newText = text.replace(pattern, "カモノハシ");

console.log(newText);
// Output: I would love to visit Australia to observe カモノハシ, especially one with a baby カモノハシ.

searchメソッドは、検索したパターンに最初にマッチした文字列が、テキストの何文字目にあるかを返す。

const text = "I would love to visit Australia to observe platypuses, especially one with a baby platypus.";
const pattern = /\bplatypus\w*/g; // platypusで始まる単語

const whereInText = text.search(pattern);

console.log(whereInText);
// Output: 43
console.log(text[whereInText])
// Output: "p"

使い道がまだピンと来ないが、マッチしないときは -1 が返ってくるので、該当が無いことの確認とかに使うのかも。

でも”p”だけじゃなくて、”p”で始まる単語を全部返してくれた方が実用性高い気がするけど、それはどうやるのかな。と思ったら先週やったmatchAllメソッドがあるじゃないか!

matchAll()メソッドの再復習

const text = "I would love to visit Australia to observe platypuses, especially one with a baby platypus.";
const pattern = /\bplatypus\w*/g; // platypusで始まる単語

const matches = text.matchAll(pattern);


for (const match of matches) {
  console.log(match);
}

// Output: 
//['platypuses', index: 43, input: 'I would love to visit Australia to observe platypuses, especially one with a baby platypus.', groups: undefined]
//['platypus', index: 82, input: 'I would love to visit Australia to observe platypuses, especially one with a baby platypus.', groups: undefined]

ただし、matchAll()メソッドが利用できるのはECMAScript 2020以降のバージョンのJavaScriptで、古いブラウザや環境では使用できない場合があるとのこと。古い環境では、exec()メソッドを使ってループをすれば同じ結果が得られるようなので必要に応じてどうぞ。

本日は以上!


週末にTOEICとITパスポートを受けてきました。(疲れた〜😫)
ITパスポートは試験終了後、その場で得点が表示されるのがありがたい。
合格基準を超えていたのでホッとはしたけど、答え合わせできないのがモヤモヤする。

類似投稿